有段代码如下
string strSql = "select * from tblItem";
OleDbDA = new OleDbDataAdapter(strSql,Connection);
dataSet = new DataSet();
OleDbCommandBuilder cmdBuilder = new OleDbCommandBuilder(OleDbDA);
OleDbDA.Fill(dataSet);
dataSet.Tables[0].Rows[0][1] = 88;//加上这句就报错
OleDbDA.Update(dataSet, dataSet.Tables[0].TableName);
dataSet.AcceptChanges();也就是说我一旦想修改dataset中的值就报错,报错信息为"语法错误 (操作符丢失) 在查询表达式 '((item = ?) AND ((? = 1 AND Description IS NULL) OR (Description = ?))....",但是我在调试的时候输出dataset.Tables[0].Rows[0][1]本来也是有值的,不知为什么会报错,希望达人指点.

解决方案 »

  1.   

    DataSet.Tables[0].Rows[0][1]是指DataSet中的表0,行0,列1   尝试下
    DataSet.Tables[0].Rows[0][1]=Convert.ToInt32("88");
      

  2.   

    你现看看你Fill后的dataset的表中是否有数据.我怎么感觉你的dataset中没有数据呢?
      

  3.   

    1.
    ((item = ?) AND ((? = 1 AND Description IS NULL) OR (Description = ?))=========如果单纯这句,就少了最外层的一个右扣号>>>((item = ?) AND ((? = 1 AND Description IS NULL) OR (Description = ?)))2.
    string strSql = "select * from tblItem";
    ===========
    LZ 勤快点, 显示指定列名,否则,错了都不知道哪里调试
      

  4.   

    改下顺序string strSql = "select * from tblItem";
    OleDbDA = new OleDbDataAdapter(strSql,Connection);
    dataSet = new DataSet();
    OleDbCommandBuilder cmdBuilder = new OleDbCommandBuilder(OleDbDA);
    OleDbDA.Fill(dataSet);
    dataSet.Tables[0].Rows[0][1] = 88;//加上这句就报错
    OleDbDA.Update(dataSet, dataSet.Tables[0].TableName);
    dataSet.AcceptChanges();
    ====================================
    string strSql = "select * from tblItem";
    OleDbDA = new OleDbDataAdapter(strSql,Connection);
    dataSet = new DataSet();
    OleDbDA.Fill(dataSet);
    dataSet.Tables[0].Rows[0][1] = 88;
    OleDbCommandBuilder cmdBuilder = new OleDbCommandBuilder(OleDbDA);
    OleDbDA.Update(dataSet, dataSet.Tables[0].TableName);
    dataSet.AcceptChanges();
      

  5.   

    to xocom(福大),按你的方法也不行,估计错误不在这里to wangchao1982 按照报错的信息我也觉得好像dataset没有数据,但是我把dataSet.Tables[0].Rows[0][1]用MESSAGE报出来也是有数据的to Jinglecat(晓风残月),报错信息我本来没有贴完整."显示指定列名"是什么意思?
      

  6.   

    to amandag(高歌),改了顺序也不行,各位有谁现成的代码,给一段让我试试也行,我是ACCESS数据库的
      

  7.   

    把dataSet.Tables[0].Rows[0][1]用MESSAGE报出来也是有数据的
       -------------------------------------------------
       那就是没有数据了。你的dataSet.Tables[0].RowCount=0或者dataSet.Tables[0].ColumnCount=1,看看是否这样。你可以现在数据库中给tblItem插入几条数据,在这样看看。
       另外你的tblItem有没有主键啊。用CommandBuilder需要有主键的。
    另外,能不能把那个错误的Stacktrace都贴出来,让大家给你参考参考。
      

  8.   

    你可以试试这样
    ....
    if(dataSet.Tables[0].RowsCount==0)
    {
       DataRow row=dataSet.Tables[0].NewRow();
       dataSet.Tables[0].Rows.Add(row);
    }
    if(dataSet.Tables[0].ColumnCount>1)
       dataSet.Tables[0].Rows[0][1] = 88;
    else if(dataSet.Tables[0].ColumnCount==0)
       dataSet.Tables[0].Rows[0][0] = 88;dataSet.Tables[0].Rows[0].EndEdit();
    ....
      

  9.   

    根据提示信息感觉错误信息不在dataSet.Tables[0].Rows[0][1] = 88;这句。
    ((item = ?) AND ((? = 1 AND Description IS NULL) OR (Description = ?))....",这个里面的第二个”?“怎么在前面?
    还有括弧什么的都查下
      

  10.   

    在OleDbDA.Update(dataSet, dataSet.Tables[0].TableName)报错
    报错信息如下:
    语法错误 (操作符丢失) 在查询表达式 '((item = ?) AND ((? = 1 AND Description IS NULL) OR (Description = ?)) AND ((? = 1 AND Quality IS NULL) OR (Quality = ?)) AND ((? = 1 AND Price IS NULL) OR (Price = ?)) AND ((? = 1 AND Mark Up IS NULL) OR (Mark Up = ?)) AND ((? = 1 AND Total IS NULL) OR (' 中。
      

  11.   

    先建立了主键后,再加上下面这句试试:MissingSchemaActionOleDbDA = new OleDbDataAdapter(strSql,Connection);
    OleDbDA.MissingSchemaAction = MissingSchemaAction.AddWithKey;
    dataSet = new DataSet();
    OleDbCommandBuilder cmdBuilder = new OleDbCommandBuilder(OleDbDA);
    OleDbDA.Fill(dataSet);
      

  12.   

    if(dataSet.Tables[0].RowsCount==0)
    {
       DataRow row=dataSet.Tables[0].NewRow();
       dataSet.Tables[0].Rows.Add(row);
    }
    if(dataSet.Tables[0].ColumnCount>1)
       dataSet.Tables[0].Rows[0][1] = 88;
    else if(dataSet.Tables[0].ColumnCount==0)
       dataSet.Tables[0].Rows[0][0] = 88;dataSet.Tables[0].Rows[0].EndEdit();
    这段代码也能执行过去,就是到了OleDbDA.Update(dataSet, dataSet.Tables[0].TableName)还是报错,各位,谁有代码给贴一段吧,谢谢了
      

  13.   

    看看这个,专门讲操作access的.http://topic.csdn.net/t/20041025/23/3490496.html
      

  14.   

    OleDbDA.Update(dataSet, dataSet.Tables[0].TableName);
    ============================================
    OleDbDA.Update(dataSet);没有现成的Access的案例..