【问题标题】:" Error in connection" when use insert command to access db with ado.net C#使用插入命令通过 ado.net C# 访问数据库时出现“连接错误”
【发布时间】:2013-08-01 18:55:46
【问题描述】:

我编写代码来插入一些值以使用 C#/ado.net 访问数据库,但出现一个名为“连接错误”的错误,尽管我使用 select 命令在同一程序中检索一些值并成功运行

OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Mohamed\documents\visual studio 2012\Projects\Library Store\Library Store\Book.accdb");

conn.Open();
OleDbCommand cmd = new OleDbCommand("INSERT INTO Store VALUES (@val1,@val2,@val3,@val4,@val5,@val6)", conn);
cmd.Parameters.AddWithValue("@val1", ISBNTB.Text.Trim());
cmd.Parameters.AddWithValue("@val2", NameTB.Text.Trim());
cmd.Parameters.AddWithValue("@val3", GategoryTB.Text.Trim());
cmd.Parameters.AddWithValue("@val4", AuthorTB.Text.Trim());
cmd.Parameters.AddWithValue("@val5", int.Parse(CostTB.Text.Trim()));
cmd.Parameters.AddWithValue("@val6", dateTimePicker1.Text);
cmd.ExecuteNonQuery();
MessageBox.Show(" Done :)");
conn.Close();

谢谢;

【问题讨论】:

  • 错误的全文和类型是什么?有内部异常吗?
  • @val1,@val2,@val3,@val4,@val5,@val6 都是您在数据库中的列吗?
  • 一定要点击Copy Execption Detial to Clipboard,然后将复制的文本粘贴到一组<pre></pre>标签中。

标签: c# sql-server database ado.net


【解决方案1】:

试一试,您没有具体说明是什么错误,但这应该可以帮助您确定是否真的有所有要插入的列

试着像这样写你的sql语句

插入表(第 1 列,第 2 列)值 (值1,值2),(值1,值2)


OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data     Source=C:\Users\Mohamed\documents\visual studio 2012\Projects\Library Store\Library     Store\Book.accdb");

conn.Open();
OleDbCommand cmd = new OleDbCommand("INSERT INTO Store **( Column1, Column2 )** VALUES(@val1,@val2,@val3,@val4,@val5,@val6)", conn);
cmd.Parameters.AddWithValue("@val1", ISBNTB.Text.Trim());
cmd.Parameters.AddWithValue("@val2", NameTB.Text.Trim());
cmd.Parameters.AddWithValue("@val3", GategoryTB.Text.Trim());
cmd.Parameters.AddWithValue("@val4", AuthorTB.Text.Trim());
cmd.Parameters.AddWithValue("@val5", int.Parse(CostTB.Text.Trim()));
cmd.Parameters.AddWithValue("@val6", dateTimePicker1.Text);
cmd.ExecuteNonQuery();
MessageBox.Show(" Done :)");
conn.Close();

【讨论】:

    【解决方案2】:

    您需要在插入语句中指定列名,以便数据库知道数据的去向。

    "INSERT INTO Store (Column1, Column2) VALUES (@val1, @val2)"
    

    【讨论】:

      【解决方案3】:

      如果你用所有列向数据库插入值,你可以使用这个查询

      INSERT INTO Store  VALUES(@val1,@val2,@val3,@val4,@val5,@val6)
      

      如果你向数据库中插入值很少的列,你会得到这个错误,你必须把它写成

      INSERT INTO Store **( Column1, Column2 )** VALUES(@val1,@val2,@val3,@val4,@val5,@val6)
      

      【讨论】:

        猜你喜欢
        • 2019-10-09
        • 1970-01-01
        • 1970-01-01
        • 2012-11-14
        • 2014-10-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多