.net - firebird插入数据,必须声明命令参数

标签 .net database firebird

我正在尝试使用以下代码将 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/

相关文章:

delphi - 尝试在 Delphi 中创建 Firebird 数据库时出现 EIBInterBaseError 'unavailable database'

.net - 有谁知道 MS Excel 求解器的更好替代品吗?

mysql - 如果第一个字母相同,SQL Access 内连接

c# - 初始化字符串的格式不符合从索引 165 开始的规范

xml - 如何将数据库查询的行转换为 XML 文件?

sql - Firebird 1.5 : How to query in 2 or more databases

metadata - EF 4.3 与 Firebrid Dot Net Provider

c# - 客户端 CommunicationException 而服务正常工作

.net - 在服务实现的合约列表中找不到 IMetaDataExchange

c# - 我如何聚焦外国窗口?