我正在尝试使用以下代码将 winforms 输入保存到 firebird 数据库
string connString = ConfigurationManager.AppSettings["ConnectionString"];
FbConnection fbConn = new FbConnection(connString);
fbConn.Open();
FbTransaction tran = fbConn.BeginTransaction();
try
{
string insertCmdStr = "INSERT INTO ARTICLES(ID,Group,Code,Name) ";
insertCmdStr += "VALUES(@id,@group,@code,@name)";
FbCommand addDataCmd = new FbCommand(insertCmdStr, fbConn, tran);
addDataCmd.ExecuteNonQuery();
}
catch (FbException ex)
{
tran.Rollback();
fbConn.Close();
throw new Exception(ex.Message);
}
tran.Commit();
fbConn.Close();
一分钟多之后(?)我收到以下错误:
必须声明命令参数
最佳答案
命令文本 (insertCmdStr) 包含 4 个参数 (@id...) 的占位符,但您没有向命令对象添加任何参数,因此出现错误。
要修复它,您需要知道为每个参数赋予什么值并将该参数添加到命令的参数集合中。
作为示例,您应该有这段代码,(但将您的变量用于值部分)
string insertCmdStr = "INSERT INTO ARTICLES(ID,Group,Code,Name) ";
insertCmdStr += "VALUES(@id,@group,@code,@name)";
FbCommand addDataCmd = new FbCommand(insertCmdStr, fbConn, tran);
addDataCmd.Parametes.AddWithValue("@id", variable_containing_the_id_value);
addDataCmd.Parametes.AddWithValue("@group",variable_containing_the_group_value);
addDataCmd.Parametes.AddWithValue("@code",variable_containing_the_code_value);
addDataCmd.Parametes.AddWithValue("@name",variable_containing_the_name_value);
addDataCmd.ExecuteNonQuery();
此外,请记住,如果 id
列是标识列,则不应为该字段传递任何值,删除列列表中对 ID 字段的引用以及占位符和参数。
关于.net - firebird插入数据,必须声明命令参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17284755/