ds=new DataSet();
dt=new OleDbDataAdapter();
conn=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
@"yang.mdb;");
cmd=conn.CreateCommand();
cmd.CommandText ="select * from Pdatum";
dt.SelectCommand =cmd;
conn.Open();
dt.Fill(ds,"Pdatum");
conn.Close();cmd.CommandText ="delete from Pdatum where Pdatumname='1'";
dt.DeleteCommand =cmd;
conn.Open();
dt.Update(ds,"Pdatum");
conn.Close();
delete from Pdatum where Pdatumname='1'这句为什么不能删除记录呢?
dt=new OleDbDataAdapter();
conn=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
@"yang.mdb;");
cmd=conn.CreateCommand();
cmd.CommandText ="select * from Pdatum";
dt.SelectCommand =cmd;
conn.Open();
dt.Fill(ds,"Pdatum");
conn.Close();cmd.CommandText ="delete from Pdatum where Pdatumname='1'";
dt.DeleteCommand =cmd;
conn.Open();
dt.Update(ds,"Pdatum");
conn.Close();
delete from Pdatum where Pdatumname='1'这句为什么不能删除记录呢?
而不是delete form
delete * from Pdatum where Pdatumname='1'这句为什么不能删除记录呢?
语句本身没问题.关第是删除不好使.
int 的话就是
delete from Pdatum where Pdatumname=1
cmd.ExecuteNonQuery()嘛
要调试sql语句,数据库里跑一次不就知道了
dt.DeleteCommand =cmd;
conn.Open();
dt.Update(ds,"Pdatum"); //这个跟前面的dt.DeleteCommand =cmd;一点关系也没有,所以没有任何意义
conn.Close();
-------------------
dt.Update(ds,"Pdatum");
本质上是根据ds的内容来改变数据表,
所以如果要删除,你的ds中要删除记录,再配以正确的cmd语句(或者自动生成的)
因为至少需要一个RowState为删除的行才能触发执行
代码
DialogResult r=MessageBox.Show("是否删除当前记录","删除当前记录!",MessageBoxButtons.YesNo ,MessageBoxIcon.Question ); int ss=(int)r; if (ss==6)
{
try
{
string str1 = @"Provider = Microsoft.Jet.OLEDB.4.0;Data Source=O:\c#\代码\访问数据库\shujuku\1.mdb"; //"@"符号是防止将后面字符串中的"\"解析为转义字符.
OleDbConnection myConn=new OleDbConnection(str1);//@"Provider=Microsoft.Jet.OLEDB.4.0;Data source=O:\c#\代码\访问数据库\shujuku\1.mdb");
myConn.Open (); string str2="delete from person where name = '3'";
OleDbCommand myCommand = new OleDbCommand(str2 , myConn ) ;
myCommand.ExecuteNonQuery();
myConn.Close ();
}
catch ( Exception ep)
{
MessageBox.Show ( "连接错误! " + ep.ToString ( ) , "错误" ) ;
}
}
呵呵
如何自己写呢?
{
String sqlStr;
sqlStr="insert into myTable(CategoryName) values (@CategoryName));select @PkID=@@identity";
theInsertCommand = new SqlCommand(sqlStr,new SqlConnection("数据库联接串"));
SqlParameterCollection sqlParams = theInsertCommand.Parameters;
sqlParams.Add(new SqlParameter( "@PkID",SqlDbType.Int));
sqlParams["@PkID"].SourceColumn="PkID";
sqlParams["@PkID"].Direction=ParameterDirection.Output;
sqlParams["@CategoryName"].SourceColumn="CategoryName";
SqlDataAdapter dsCommand;
dsCommand = new SqlDataAdapter();
dsCommand.SelectCommand = new SqlCommand();
dsCommand.SelectCommand.Connection = new SqlConnection("数据库联接串");
dsCommand.InsertCommand=theInsertCommand;
dsCommand.Update(data,"MyTable"); //注意这个MyTable
if ( data.HasErrors )
{
data.Tables[GoodsCategoryData.TABLE_NAME].GetErrors()[0].ClearErrors();
return false;
}
else
{
data.AcceptChanges();
return true;
}}
{
String sqlStr;
sqlStr="insert into myTable(CategoryName) values (@CategoryName));select @PkID=@@identity";
theInsertCommand = new SqlCommand(sqlStr,new SqlConnection("数据库联接串"));
SqlParameterCollection sqlParams = theInsertCommand.Parameters;
sqlParams.Add(new SqlParameter( "@PkID",SqlDbType.Int));
sqlParams["@PkID"].SourceColumn="PkID";
sqlParams["@PkID"].Direction=ParameterDirection.Output;
sqlParams["@CategoryName"].SourceColumn="CategoryName";
SqlDataAdapter dsCommand;
dsCommand = new SqlDataAdapter();
dsCommand.SelectCommand = new SqlCommand();
dsCommand.SelectCommand.Connection = new SqlConnection("数据库联接串");
dsCommand.InsertCommand=theInsertCommand;
dsCommand.Update(data,"MyTable"); //注意这个MyTable
if ( data.HasErrors )
{
data.Tables[GoodsCategoryData.TABLE_NAME].GetErrors()[0].ClearErrors();
return false;
}
else
{
data.AcceptChanges();
return true;
}}
不过,好麻烦呀.还是用OleDbCommandBuilder方便呀.