簡體   English   中英

C#SQL語句-查詢中的語法錯誤。 不完整的查詢子句

[英]C# SQL statement - Syntax error in query. Incomplete query clause

以下是我擁有的代碼,我無法終生確定查詢出了什么問題。

我最初有一個錯誤“沒有給1個或多個參數賦值”,該錯誤似乎已經消失了(盡管我什至不知道為什么會得到它)。

該連接在此代碼之前打開。 參數GVars.thisFY是字符串=“ FY13”-該表肯定存在。 參數GVars.currentDate是DateTime =今天。

此[目標]和[下一個收藏]范圍肯定存在記錄:

string sql;
OleDbDataAdapter adapter;

sql = "SELECT * FROM @CurFY WHERE [Destination] = @Destination AND [Next Collection] BETWEEN @NextCollectionA AND @NextCollectionB;";

// Create the command object
OleDbCommand cmd = new OleDbCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = sql;

// Add values to the fields
cmd.Parameters.AddWithValue("@CurFY", GVars.thisFY);
cmd.Parameters.AddWithValue("@Destination", "Henwood");
cmd.Parameters.AddWithValue("@NextCollectionA", GVars.currentDate);
cmd.Parameters.AddWithValue("@NextCollectionB", GVars.currentDate.AddDays(1));

adapter = new OleDbDataAdapter(cmd.CommandText, conn);

try
{
    adapter.Fill(ds);

    GVars.bLblLastUpdate = DateTime.Now.ToString("HH:mm:ss");
}
catch (Exception ex)
{
}

編輯:我已經更改了代碼以刪除表參數,如下所示,但仍然得到“沒有給1個或多個參數賦值”,盡管我無法確定。

EDIT2:我刪除了多余的內容,因此該帖子僅與原始問題相關,已被回答。 我將針對我奇怪的“無價值”錯誤提出一個新問題

您不能使用表,視圖或列的名稱來參數化查詢。 僅數據成員可以參數化。

您需要動態創建SQL,例如:

sql = string.Format(
    "SELECT * FROM {0} WHERE [Destination] = @Destination AND [Next Collection] BETWEEN @NextCollectionA AND @NextCollectionB;"
,  GVars.thisFY
);

僅當GVars.thisFY由您的代碼控制(例如來自預定義列表)或檢查是否存在非字母數字字符以避免SQL注入攻擊時 ,才應這樣做。

試試這個-

sql = Sring.Format(
    "SELECT * FROM {0} WHERE [Destination] = @Destination AND [Next Collection] BETWEEN @NextCollectionA AND @NextCollectionB;", 
    GVars.thisFY
)

cmd.Parameters.AddWithValue("@Destination", "Henwood");
cmd.Parameters.AddWithValue("@NextCollectionA", GVars.currentDate);
cmd.Parameters.AddWithValue("@NextCollectionB", GVars.currentDate.AddDays(1));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM