![](/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.