public DataSet modify_SYQX(string FMKDM,string JSDM,string MKDM)
{
System.Data.DataSet dsQX = new System.Data.DataSet();
DataTable tbl = dsQX.Tables.Add("WG_QXPZ"); DataColumn col= tbl.Columns.Add("JSDM",typeof(string)); 
col.MaxLength = 10;
tbl.Columns["JSDM"].AllowDBNull = false; tbl.Columns.Add("MKDM",typeof(int));
tbl.Columns["MKDM"].AllowDBNull = false;
tbl.Columns["MKDM"].Unique = true; //add row
string [] split = MKDM.Split(new Char [] {','}); foreach (string s in split) 
{
DataRow row = dsQX.Tables["WG_QXPZ"].NewRow();
row["JSDM"] = JSDM;
row["MKDM"] = s;
dsQX.Tables["WG_QXPZ"].Rows.Add(row);
}
//dsQX.AcceptChanges(); System.Data.SqlClient.SqlConnection sqlConn = new System.Data.SqlClient.SqlConnection(ConfigurationSettings.AppSettings["SqlConnectionString"]);

SqlDataAdapter adptQX = new SqlDataAdapter();

adptQX.InsertCommand = new SqlCommand("WG_QXPZ_Insert",sqlConn);
adptQX.InsertCommand.Parameters.Clear(); SqlParameter parameter4 = new SqlParameter("@JSDM", SqlDbType.VarChar,10,"JSDM" );
adptQX.InsertCommand.Parameters.Add(parameter4); SqlParameter parameter3 = new SqlParameter("@MKDM", SqlDbType.Int,4,"MKDM" );
adptQX.InsertCommand.Parameters.Add(parameter3); sqlConn.Open();
adptQX.Update(dsQX,"WG_QXPZ");//报错行
sqlConn.Close();
return dsQX;
}
报错:第 1 行: 'WG_QXPZ_Insert' 附近有语法错误。 
请问怎么回事。
存储过程如下:
CREATE PROCEDURE WG_QXPZ_Insert
@JSDM varchar(10),
@MKDM int
 ASInsert into WG_QXPZ
(JSDM,MKDM)
values (@JSDM,@MKDM)
GO
看起来好像是dsQX中的列参数没有传递过来。
我用//dsQX.AcceptChanges();不出错,但是执行的操作没有结果。
是不是我在构造DataSet是要做什么设置?求救,我实在不知道怎么来调试这个错误了

解决方案 »

  1.   

    try:
    adptQX.InsertCommand.CommandType = CommandType.StoreProcedure;
      

  2.   

    SqlParameter parameter3 = new SqlParameter("@MKDM", SqlDbType.Int,4,"MKDM" );;这最后的"MKDM"是什么?怎麼成int?我猜应该是tbl的字段值吧!那怎么写成这样?
      

  3.   

    这段时间我真是太该死了,问题检查了半天,耗费了大量时间调试。结果就是 “bitsbird(一瓢 闭关)”所说的问题,平常我写程序的时候也都挺注意这个的,今天居然能出这么低级的错误。谢谢了。