ADO.NET中的删除行问题。c#

来源:百度知道 编辑:UC知道 时间:2024/06/01 05:17:43
我的如下代码运行时出现错误:“对于不返回任何键列信息的 SelectCommand,不支持 DeleteCommand 的动态 SQL 生成”

using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.OleDb;

namespace DeletingRow
{
class Program
{
static void Main(string[] args)
{
OleDbConnection thisConnection = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\huashi1\DB\华师订餐.mdb");
OleDbDataAdapter thisAdatpter = new OleDbDataAdapter("Select * from 会员积分表", thisConnection);
OleDbCommandBuilder thisCommand = new OleDbCommandBuilder(thisAdatpter);
DataSet thisDataSet = new DataSet();

thisAdatpter.Fill(thisDataSet, "会员积分表");
//定义主键
DataColumn[] keys = new DataColumn[1];
keys[0] = thisDataSet.Tables[0].Columns["会员号"];
thisData

你的会员积分表里似乎没有设置主键。
两个解决办法:
1.在会员积分表里设置主键。
2.指定thisAdatpter 的DeleteCommadn。例如:
SqlCommand deCmd=new SqlCommand("Delete [会员积分表] where 会员号=@会员号",myConn);
upCmd.Parameters.Add("@会员号",SqlDbType.Int,8,"会员号");
thisAdatpter.DeleteCommand=deCmd;

对于通过SQLCOMMANDBUILTER自动生成的SQL语句需要你的数据库中的数据表具有主键,否则的话,自动生成的SQL语句就不知道该怎么删除数据了,所以一般还是建议自己手写SQL语句进行数据库操作。

DataColumn[] keys = new DataColumn["你根据删除列的名字"];

是主键出错,或是数据绑定的时候出错···