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_Re) 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() + "'," +
                        "'"  + textRe.Text.Trim() + "')";             SqlCommand com = new SqlCommand(sql,conn );           com.ExecuteNonQuery(); 
                    MessageBox.Show("添加出库信息成功!", "提示");
                    this.Close();            }  }提示 ExecuteNonQuery()附近有语法错误,求帮助。

解决方案 »

  1.   

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

  2.   

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

  3.   

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

  4.   

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

  5.   

    把分给我吧。呵呵  string sql = "insert into outinfo (G_ID,G_Name,G_Type,O_Number,O_Price,O_Value,O_InDate,O_Dealer,G_Re) 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() + "','" + textRe.Text.Trim() + "')";
      

  6.   

    刚刚上面的你整行复制下就好,我现在是分行显示发出来,呵呵
    string sql = "insert into outinfo 
    (G_ID,G_Name,G_Type,O_Number,O_Price,O_Value,O_InDate,O_Dealer,G_Re) 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() + "',
    '" + textRe.Text.Trim() + "')";
      

  7.   

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

  8.   

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

  9.   

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