【问题标题】:SQL Error = -804 (C# with firebird database)SQL 错误 = -804(带有 firebird 数据库的 C#)
【发布时间】:2013-06-12 09:31:17
【问题描述】:

我正在尝试将来自四个文本框的数据输入到 Firebird 数据库中。每次单击执行以下代码的按钮时,我都会得到一个“SQL Error = -804 Count of read-write columns does not equal count of values.” 我不确定这个错误是什么意思。我的代码是:

 private void button1_Click(object sender, EventArgs e)
        {
                string ConnectionString = "User ID=sysdba;Password=masterkey;" +
                "Database=localhost:G:\\nael.FDB; " +
                "DataSource=localhost;Charset=NONE;";

                FbConnection addDetailsConnection = new FbConnection(ConnectionString);
                addDetailsConnection.Open();

                FbTransaction addDetailsTransaction =
                              addDetailsConnection.BeginTransaction();

                string SQLCommandText = " INSERT into Invoice_Name Values" +
                                        "('" + textBox1.Text + "',' "
                                             + textBox2.Text + "',' "
                                             + int.Parse(textBox3.Text) + "',' "
                                             + textBox4.Text + "',' "
                                             + "')";

                FbCommand addDetailsCommand = new FbCommand(SQLCommandText,
                          addDetailsConnection, addDetailsTransaction);
                addDetailsCommand.ExecuteNonQuery();
                addDetailsTransaction.Commit();
                MessageBox.Show(" Details Added");
        }

【问题讨论】:

  • 我建议您始终指定要插入的列,并使用参数化查询来防止 SQL 注入

标签: c# sql database firebird


【解决方案1】:

我敢打赌,您的 TextBox.Text 值中有一个逗号...否则:您是否检查过您是否指定了正确数量的列?

基本上,SQL 引擎抱怨你给了它一个参数列表,它正试图将这些参数填充到表 Invoice_Name 中,除了该表中的列计数值太多。尝试将SQLCommandText 打印到输出窗口(@98​​7654325@),看看是否符合您的预期...

您也不应该这样做...在此处查看此帖子:Inserting into DB with parameters safe from SQL injection?

【讨论】:

  • 愚蠢的错误。两个额外的单引号添加了一个额外的参数。感谢您的链接。很有帮助。
  • 啊。我没有发现。对不起。仍然。不要这样做 - 它会使您的应用程序容易受到 sql 注入攻击。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-21
  • 2017-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多