![](/img/trans.png)
[英]Syntax Error (Missing Operator) in query expression with Multiple Inner Join in C# MS Access
[英]Getting a syntax error (missing operator) in query expression in C# for MS Access
我想用 c# 和 MS Access SQL 創建一個材料數據庫:
private void btnTest_Click(object sender, EventArgs e)
{
string provStr = "Provider=Microsoft.Jet.OLEDB.4.0;";
string openStr = "Data source=" + AppDomain.CurrentDomain.BaseDirectory + "MaterialDB.mdb";
// Create structure, if not exist
con = new OleDbConnection();
con.ConnectionString = provStr + openStr;
try
{
con.Open();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
OleDbCommand cmdTest = con.CreateCommand();
cmdTest.CommandText = "CREATE TABLE NomCom (" + Environment.NewLine +
" ID INT NOT NULL IDENTITY(1,1) PRIMARY KEY," + Environment.NewLine +
" ValueTest VARCHAR(50) NOT NULL UNIQUE" + Environment.NewLine +
");" + Environment.NewLine;
cmdTest.ExecuteNonQuery();
cmdTest.CommandText = "INSERT INTO NomCom (ValueTest)" + Environment.NewLine + //ID ValueTest
"SELECT @valuenomcom;";
cmdTest.Parameters.AddWithValue("@valuenomcom", "Steel");
cmdTest.ExecuteNonQuery();
}
這工作正常。
但是當我嘗試僅在該項目不存在的情況下插入時
private void ...
{
cmdTest.CommandText = "INSERT INTO NomCom (ValueTest)" + Environment.NewLine + //ID ValueTest
"SELECT @valuenomcom WHERE NOT EXISTS(SELECT * FROM NomCom WHERE Value = @valuenomcom);" + Environment.NewLine;
cmdTest.Parameters.AddWithValue("@valuenomcom", "Steel");
cmdTest.ExecuteNonQuery();
}
這不起作用。 我收到此錯誤:
在查詢表達式“@valuenomcom WHERE NOT EXISTS(SELECT * FROM NomCom WHERE Value = @valuenomcom)”中出現語法錯誤(缺少運算符)。
但我不知道問題是什么。
有任何想法嗎?
我沒有訪問權限,因此無法測試語法。 但是按照這個答案https://stackoverflow.com/a/16530237/3470178
你可以這樣做:
cmdTest.CommandText =
"INSERT INTO NomCom (ValueTest)" + Environment.NewLine + //ID ValueTest
"SELECT *
FROM ( SELECT @valuenomcom as newValue ) as Q
WHERE Q.newValue NOT IN (SELECT Value FROM NomCom WHERE Value = @valuenomcom);" +
Environment.NewLine;
cmdTest.Parameters.AddWithValue("@valuenomcom", "Steel");
cmdTest.ExecuteNonQuery();
當然,首先在 Access 上進行測試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.