zhangleishiyan
古耕
采纳率0%
2017-06-29 08:44 阅读 1.4k

C# 修改数据时出现:对于不返回任何基表信息的 SelectCommand 不支持动态 SQL 生成

10
            string str = @"D:\MirServer龙纹之刃";
            DataTable dt = DBItemDGV.DataSource as DataTable;
            if (Directory.Exists(str + @"\Mud2\DB\"))
            {
                //物品查看
                string ConnectionString = @"Driver={Microsoft Paradox Driver (*.db )};DriverID=538;Fil=Paradox 5.X;DefaultDir=" + str + @"\Mud2\DB;Dbq=" + str + @"\Mud2\DB;CollatingSequence=ASCII;PWD=;";
                using (System.Data.Odbc.OdbcConnection conn = new System.Data.Odbc.OdbcConnection(ConnectionString))
                {
                    conn.Open();
                    string sql = String.Format("update StdItems set {0}={1} where Name={2}",
                    DBItemDGV.Columns[e.ColumnIndex].DataPropertyName,    //所选单元格修改后的值
                    DBItemDGV.SelectedRows[0].Cells[e.ColumnIndex].Value,    //所选单元格修改后的值
                    DBItemDGV.SelectedRows[0].Cells[1].Value);
                    using (System.Data.Odbc.OdbcDataAdapter da = new OdbcDataAdapter(sql, conn))
                    {
                        OdbcCommandBuilder b = new OdbcCommandBuilder(da);
                        da.UpdateCommand = b.GetUpdateCommand();
                        da.Update(dt);
                    }
                    conn.Close();
                }
            }

select语句都是正常的,试过很多方法了,主要是自己对这块不是很理解,有没有大神?
先看看我代码有没有问题,然后再给个解决办法吧

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

2条回答 默认 最新

  • wodewojueding wodewojueding 2017-06-29 09:00

    你只是要已修改,怎么会用到OdbcDataAdapter,直接用odbccommand就行,

    你这样是要在查询的时候用的,或者你想要有返回结果的 时候,必须要有查询语句才行

    点赞 评论 复制链接分享
  • this_xyh this_xyh 2017-06-29 09:25

    你这边是修改, 不用使用Adapter , 直接只用ccommand.ExecuteNonQuery() 返回受影响行数就好了

    点赞 评论 复制链接分享

相关推荐