DataAdapter的update到底能不能改变数据库,不论我怎么用好像都没用啊! this.oleDbDataAdapter1的selectcommand,insertcommand,updatecommand,deletecommand设置了吗,表映射呢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 参照如下代码: // // sqlInsertCommand1// this.sqlInsertCommand1.CommandText = "INSERT INTO student(stuno, name, sex, address) VALUES (@stuno, @name, @sex, @addr" + "ess); SELECT stuno, name, sex, address FROM student WHERE (stuno = @stuno)";this.sqlInsertCommand1.Connection = this.sqlConnection1;this.sqlInsertCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@stuno", System.Data.SqlDbType.Int, 4, "stuno"));this.sqlInsertCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@name", System.Data.SqlDbType.Int, 4, "name"));this.sqlInsertCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@sex", System.Data.SqlDbType.Int, 4, "sex"));this.sqlInsertCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@address", System.Data.SqlDbType.Int, 4, "address"));// // sqlUpdateCommand1// this.sqlUpdateCommand1.CommandText = @"UPDATE student SET stuno = @stuno, name = @name, sex = @sex, address = @address WHERE (stuno = @Original_stuno) AND (address = @Original_address OR @Original_address IS NULL AND address IS NULL) AND (name = @Original_name OR @Original_name IS NULL AND name IS NULL) AND (sex = @Original_sex OR @Original_sex IS NULL AND sex IS NULL); SELECT stuno, name, sex, address FROM student WHERE (stuno = @stuno)";this.sqlUpdateCommand1.Connection = this.sqlConnection1;this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@stuno", System.Data.SqlDbType.Int, 4, "stuno"));this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@name", System.Data.SqlDbType.Int, 4, "name"));this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@sex", System.Data.SqlDbType.Int, 4, "sex"));this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@address", System.Data.SqlDbType.Int, 4, "address"));this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Original_stuno", System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "stuno", System.Data.DataRowVersion.Original, null));// sqlDeleteCommand1// this.sqlDeleteCommand1.CommandText = @"DELETE FROM student WHERE (stuno = @Original_stuno) ";this.sqlDeleteCommand1.Connection = this.sqlConnection1;this.sqlDeleteCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Original_stuno", System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "stuno", System.Data.DataRowVersion.Original, null));try{ sqlDa.Update(dt.GetChanges,"customers"); return true;}catch(System.Data.SqlClient.SqlException ex){ myTran.Rollback(); return false;} finally{ conn.Close();} 你应该使用上SqlCommandBuilder thisBuilder=new SqlCommandBuilder(thisAdapter)这样就可以了,这个可以保证你对dataset的更新,反馈到数据库的更新。 可以更新!你在.net的ide中直接拖出空件,建立好数据连接及绑定后,再this.oleDbDataAdapter1.Update就可以了,其中自动增加了很多东西我没有仔细看,只是试了一下:) SqlDataAdapter custDA = new SqlDataAdapter(commandText, connection);SqlCommandBuilder custCB = new SqlCommandBuilder(custDA);custDA.TableMappings.Add(tableName, ds.Tables[0].ToString()); bian8021: 我第一行就写了CommandBuilder,有效就好了 xiaodele: this.oleDbDataAdapter1.Fill(custDS,"TrackStatus"),不是已经添加了 SqlCommandBuilder thisBuilder=new SqlCommandBuilder(thisAdapter)用这个最好更新对象和语句自动生成了。。 新建了一个一摸一样的表,居然可以存储了,但是原来的表我把所有关系都删除了,还是保存不了,而且也不报错,看来可能是表被破坏了,但是真的感觉DataAdapter应该报错,我还以为我的程序有问题. 还是多谢大家,结贴了 怎样在dataGridView的列头添加combobox 另开一帖,socket无响应服务器端挂死 动软.net代码生产器碰到 数据表 增加字段 怎么办 如何捕获数据库连接的错误? 控制台程序不能读数据库问题. 一段串口代码的问题 Asp.Net验证控件问题(急救!!!) nhibernate中有关Load方法的一个问题 少壮不努力,老大写程序 急(需要帮助,再线) 两个关于操作SQLSERVER的简单问题。。。 40G的FTP,好东东无数,现试开.请大家测试..如果没问题的话长期开放
//
// sqlInsertCommand1
//
this.sqlInsertCommand1.CommandText = "INSERT INTO student(stuno, name, sex, address) VALUES (@stuno, @name, @sex, @addr" +
"ess); SELECT stuno, name, sex, address FROM student WHERE (stuno = @stuno)";
this.sqlInsertCommand1.Connection = this.sqlConnection1;
this.sqlInsertCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@stuno", System.Data.SqlDbType.Int, 4, "stuno"));
this.sqlInsertCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@name", System.Data.SqlDbType.Int, 4, "name"));
this.sqlInsertCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@sex", System.Data.SqlDbType.Int, 4, "sex"));
this.sqlInsertCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@address", System.Data.SqlDbType.Int, 4, "address"));
//
// sqlUpdateCommand1
//
this.sqlUpdateCommand1.CommandText = @"UPDATE student SET stuno = @stuno, name = @name, sex = @sex, address = @address WHERE (stuno = @Original_stuno) AND (address = @Original_address OR @Original_address IS NULL AND address IS NULL) AND (name = @Original_name OR @Original_name IS NULL AND name IS NULL) AND (sex = @Original_sex OR @Original_sex IS NULL AND sex IS NULL); SELECT stuno, name, sex, address FROM student WHERE (stuno = @stuno)";
this.sqlUpdateCommand1.Connection = this.sqlConnection1;
this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@stuno", System.Data.SqlDbType.Int, 4, "stuno"));
this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@name", System.Data.SqlDbType.Int, 4, "name"));
this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@sex", System.Data.SqlDbType.Int, 4, "sex"));
this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@address", System.Data.SqlDbType.Int, 4, "address"));
this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Original_stuno", System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "stuno", System.Data.DataRowVersion.Original, null));// sqlDeleteCommand1
//
this.sqlDeleteCommand1.CommandText = @"DELETE FROM student WHERE (stuno = @Original_stuno) ";
this.sqlDeleteCommand1.Connection = this.sqlConnection1;
this.sqlDeleteCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Original_stuno", System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "stuno", System.Data.DataRowVersion.Original, null));try
{
sqlDa.Update(dt.GetChanges,"customers");
return true;
}
catch(System.Data.SqlClient.SqlException ex)
{
myTran.Rollback();
return false;
}
finally
{
conn.Close();
}
这样就可以了,这个可以保证你对dataset的更新,反馈到数据库的更新。
我没有仔细看,只是试了一下:)
SqlCommandBuilder custCB = new SqlCommandBuilder(custDA);
custDA.TableMappings.Add(tableName, ds.Tables[0].ToString());
我第一行就写了CommandBuilder,有效就好了
xiaodele:
this.oleDbDataAdapter1.Fill(custDS,"TrackStatus"),不是已经添加了
用这个最好更新对象和语句自动生成了。。