【发布时间】:2016-05-03 16:30:20
【问题描述】:
我想在一个小型 C# 应用程序中使用以下 SQL 语句。
SQL 语句在 Access 2013 中运行完美。
INSERT INTO adressed_to (dialog,listener)
VALUES (
DMin("id", "FIGURE", "char_name='Doe' AND forename='John'"),
DMin("id", "DIALOG", "speaker=3 AND dialog_text='some text'")
);
当我尝试运行以下 C# 代码时,我得到一个“参数太少”异常,我三次检查拼写,我什至从 Access 查询中复制了字符串。 在双引号中更改单引号不起作用,我得到了同样的例外。甚至可以在 C# 中运行此查询吗?
其他查询工作正常。
string addListeners = @"INSERT INTO adressed_to (dialog,listener)
VALUES (
DMin('id', 'FIGURE', 'char_name =? AND forename =?'),
DMin('id', 'DIALOG', 'speaker=? AND dialog_text=?')
); ";
foreach (Character listener in d.addressed_to)
{
using (OleDbCommand cmd = new OleDbCommand(addListeners, dbConn))
{
cmd.Parameters.AddWithValue("?", listener.name);
cmd.Parameters.AddWithValue("?", listener.forename);
cmd.Parameters.AddWithValue("?", speakerID);
cmd.Parameters.AddWithValue("?", d.dialog_text);
cmd.ExecuteNonQuery();
}
}
按照建议将字符串更改为以下内容无效:
@"INSERT INTO adressed_to (dialog,listener)
VALUES (
DMin(""id"", ""FIGURE"", ""char_name =? AND forename =?""),
DMin(""id"", ""DIALOG"", ""speaker=? AND dialog_text=?"")
); ";
例外:
“System.Data.OleDb.OleDbException”类型的异常发生在 System.Data.dll 但未在用户代码中处理 附加信息:参数太少。预计 2。
【问题讨论】:
-
您在 addListeners 中使用 ' 而不是 "。尝试使用 @"... ""id"",...", double " 是使用 @ 时的转义方式
标签: c# sql ms-access ms-access-2013