+ -
当前位置:首页 → 问答吧 → C# 想数据库中添加数据的问题

C# 想数据库中添加数据的问题

时间:2011-12-17

来源:互联网

private void btnOut_Click(object sender, EventArgs e)
  {
  if (textID.Text.Trim() == "")
  MessageBox.Show("请填写物资编号!", "提示");
  else
  {
   
  string connectionString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=D:\\仓库管理系统\\storeMIS.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
  SqlConnection conn = new SqlConnection(connectionString);
  conn.Open();

  string sql = "insert into outinfo (G_ID,G_Name,G_Type,O_Number,O_Price,O_Value,O_InDate,O_Dealer,G_Remark) values " +
  "('" + textID.Text.Trim() + "','" + textName.Text.Trim() + "'," + textType.Text.Trim() + "'," + textAccount.Text.Trim() + "'," +
  "'" + textPrice.Text.Trim() + "','" + textValue.Text.Trim() + "','" + date1.Text.Trim() + "','" + textDealer.Text.Trim() + "'," +
  "'" + textRemark.Text.Trim() + "')";

  SqlCommand com = new SqlCommand(sql,conn );

  com.ExecuteNonQuery(); 
  MessageBox.Show("添加出库信息成功!", "提示");
  this.Close();

  }

  }

提示 ExecuteNonQuery()附近有语法错误,求帮助。

作者: a8764831   发布时间: 2011-12-17

把你整个的sql显示出来,好好查查,特别是类型是否匹配,是否丢了引号等等,字段数量是否匹配

作者: bdmh   发布时间: 2011-12-17

这个没法看,你可以在com.ExecuteNonQuery(); 设置一个断点,运行到断点后,查看string sql 的值,把sql变量的值复制出来,贴到sql server的查询窗口中,然后用sql server查询窗口运行这个sql语句,然后再看哪里错了,

作者: stonespace   发布时间: 2011-12-17

如果sql太长,可以一段一段缩小范围查找错误位置,比如先把where字句全部去掉,可以判定错误是不是在where字句,然后把select字段列表的字段一个一个去掉,where子句的查询条件一个一个去掉,直到成功运行,你就找到出错的位置,

作者: stonespace   发布时间: 2011-12-17

其实我很困惑
直觉上你的数据类型错了 首先价格是varchar类型?
还有," + textType.Text.Trim() + "'这个是什么?多了一个单引号还是少了一个?

作者: zyloveyrf   发布时间: 2011-12-17

把分给我吧。呵呵
C# code

  string sql = "insert into outinfo (G_ID,G_Name,G_Type,O_Number,O_Price,O_Value,O_InDate,O_Dealer,G_Remark) values('" + textID.Text.Trim() + "','" + textName.Text.Trim() + "','" + textType.Text.Trim() + "','" + textAccount.Text.Trim() + "','" + textPrice.Text.Trim() + "','" + textValue.Text.Trim() + "','" + date1.Text.Trim() + "','" + textDealer.Text.Trim() + "','" + textRemark.Text.Trim() + "')";

作者: gdmvip   发布时间: 2011-12-17

刚刚上面的你整行复制下就好,我现在是分行显示发出来,呵呵
C# code


string sql = "insert into outinfo 
(G_ID,G_Name,G_Type,O_Number,O_Price,O_Value,O_InDate,O_Dealer,G_Remark) values
('" + textID.Text.Trim() + "','" + textName.Text.Trim() + "',
'" + textType.Text.Trim() + "','" + textAccount.Text.Trim() + "',
'" + textPrice.Text.Trim() + "','" + textValue.Text.Trim() + "',
'" + date1.Text.Trim() + "','" + textDealer.Text.Trim() + "',
'" + textRemark.Text.Trim() + "')";


作者: gdmvip   发布时间: 2011-12-17

另外给你一个意见,你这样写SQL很容易给SQL注入 可以稍微加点 字符串过滤 或者永传参的方式来写

作者: gdmvip   发布时间: 2011-12-17

我也是初学的,你确定你的SQL语句没错?我觉得你应该在com.ExecuteNonQuery(); 下面+个判断,
 int a=com.ExecuteNonQuery();  
while(a>0)
{
MessageBox.Show("添加出库信息成功!", "提示");

}
其实我感觉应该是sql错额!!(*^__^*) 嘻嘻……

作者: woxikuanwan   发布时间: 2011-12-17

代码看起来不美哦...
很明显的错误 O_Number,O_Price 这两个字段不是字符串类型把..你还用单引号..
这种错误,你可以打个断点看sql语句在数据库里执行以下 就知道哪错了

作者: Net_Java_dram   发布时间: 2011-12-17