以下代码在运行到:
thisAdapter.Update(thisDataSet, "cardno");时 报
“对于不返回任何键列信息的 SelectCommand,不支持 DeleteCommand 的动态 SQL 生成。”
求助应如何更改才能正确完成该删除操作?代码:
DataRow[] thisRow1;
thisAdapter = new OleDbDataAdapter("select * from cardno",thisConnect);
thisComm = new OleDbCommandBuilder(thisAdapter);
thisDataSet = new DataSet();
thisAdapter.Fill(thisDataSet, "cardno");
string selectStr="rm_num="+"'"+textRmnum.Text+"'";
thisRow1 = thisDataSet.Tables["cardno"].Select(selectStr);
for (int i = 0; i < thisRow1.Length; i++)
{
thisRow1[i].Delete();
}
thisAdapter.Update(thisDataSet, "cardno");
thisAdapter.Update(thisDataSet, "cardno");时 报
“对于不返回任何键列信息的 SelectCommand,不支持 DeleteCommand 的动态 SQL 生成。”
求助应如何更改才能正确完成该删除操作?代码:
DataRow[] thisRow1;
thisAdapter = new OleDbDataAdapter("select * from cardno",thisConnect);
thisComm = new OleDbCommandBuilder(thisAdapter);
thisDataSet = new DataSet();
thisAdapter.Fill(thisDataSet, "cardno");
string selectStr="rm_num="+"'"+textRmnum.Text+"'";
thisRow1 = thisDataSet.Tables["cardno"].Select(selectStr);
for (int i = 0; i < thisRow1.Length; i++)
{
thisRow1[i].Delete();
}
thisAdapter.Update(thisDataSet, "cardno");
thisAdapter = new OleDbDataAdapter(@"select * from cardno",thisConnect);
thisComm = new OleDbCommandBuilder(thisAdapter);
thisDataSet = new DataSet();
thisAdapter.Fill(thisDataSet, "cardno");
thisRow = thisDataSet.Tables["cardno"].NewRow();
thisRow["rm_num"] = textRmnum.Text;
thisRow["cardno"] = textCardno.Text;
thisDataSet.Tables["cardno"].Rows.Add(thisRow);
thisAdapter.Update(thisDataSet, "cardno");
查看下 表是否有主键?没有,就添加!
有,还错误,加这句话
myDataTable.PrimaryKey=new DataColumn[]{myDataTable.Columns["email"]};
为表设置下主键还有你这删除有问题!
for (int i = 0; i < thisRow1.Length; i++)
{
thisRow1[i].Delete();
} 改:
for (int i = 0; i < thisRow1.Length; i++)
{
thisRow1[i].Delete();
i--;
}
就是删除所有rm_num等于textRmnum.Text的记录 OleDbConnection conn = new OleDbConnection( "你的链接字符串" );
conn.Open(); OleDbCommand cmd = new OleDbCommand();
cmd.Connection = conn;
cmd.CommandText = "DELETE from cardno where rm_num='" + textRmnum.Text + "'";
cmd.ExecuteNonQuery(); conn.Close();
可我觉着是不是现在dataset里面删掉在对数据库作更新更加安全些 所以目前希望能按照这个顺序写代码
因此遇到了以上问题。望高人解答
你这不是难为微软么...
http://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqldataadapter.rowupdating%28VS.80%29.aspx
自己实现onrowupdating事件。
是否应改成
for (int i = thisRow1.Length-1; i>0; i--)
{
thisRow1[i].Delete();
}