我通过查询数据遍历datareader,自定义生成了一个datatable,它的列结构和数据库表结构一致,然后将它添加了到了dataset中,绑定在datagridview上,现在希望界面上修改数据后,点保存能够更新数据库表,请问如何操作?这个dataset不是通过SqlDataAdapter填充的,而是查询数据库后构造的。csdn找到一个问题
自定义的DataTable如何存入SQL Server中同名的空表中?
http://topic.csdn.net/u/20090311/13/959416E2-C859-499D-B9ED-7C225158A48B.html#r_55717246但这是insert操作,而我想进行更新操作。
自定义的DataTable如何存入SQL Server中同名的空表中?
http://topic.csdn.net/u/20090311/13/959416E2-C859-499D-B9ED-7C225158A48B.html#r_55717246但这是insert操作,而我想进行更新操作。
解决方案 »
- dev控件 怎样获取gridview中checkbox型的check状态(值)
- C# 第三方控件 devexpress ,Telerik 哪个好
- 错误 CS0234: 命名空间“System.IO”中不存在类型或命名空间名称“Pipes”(是缺少程序集引用吗?)
- 仿百度知道
- 求C#做客户端的 长连接例子
- 欢迎讨论:计算机病毒能存在于AVI文件中吗?
- 难题:不可删除的文件夹,如何通过程序读取文件夹内容?
- 请问如何将session值绑定到label上...........
- C#连接Mysql服务器配置问题,求大神解答
- 如何在C#中获取Unix格式的时间戳???
- 把字符串输出为html
- 高分寻求解决方案
SqlDataAdapter sda = DataAccessBlock.GetDataAdapter() as SqlDataAdapter;
SqlConnection sc = DataAccessBlock.GetDataConnection() as SqlConnection;
sda.Fill(dsUpDate数据);
SqlCommandBuilder scq = new SqlCommandBuilder(sda);
sda.InsertCommand = scq.GetInsertCommand();
sda.Update(dsUpDate数据, stTableName);
dsUpDate数据.Dispose();
{
SqlDataAdapter Adapter = new SqlDataAdapter();
DataTable table = TableName;
using (SqlConnection connection = new SqlConnection(connectionString))
{
Adapter.SelectCommand = new SqlCommand(SelectString, connection);
SqlCommandBuilder builder = new SqlCommandBuilder(Adapter);
Adapter.UpdateCommand = builder.GetUpdateCommand();
try
{
Adapter.Update(table);
table.AcceptChanges();
return Adapter;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
}
//调用
DataTable Table=(DataTable)datagridview1.DataSource;
string sql="select * from 你要更新的表名"
AdapterUpdate(Table, sql,数据库连接字串)
有两个地方没看懂
1.DataAccessBlock是自定义类吗?
2.sda.Fill(dsUpDate数据);是什么意思? 我的datatable是自己构造的,不是通过sda Fill的
我想是不是他执行的是insert操作,而表中有主键 不能重复。
所以执行了insert操作,因为主键不允许重复,所以出错。一个自定义的datatable(和数据库表结构一致)就没有办法能用SqlDataAdapter更新了吗?
string sql="select * from 你要更新的表名"
AdapterUpdate(Table, sql,数据库连接字串)
你用断点可以看看table.Rows里面每个DataRow的属性DataRowState , Adapter.Update会自动更具行状态来更新:包括添加、删除、修改!数据库看看MSDN,上面有源码:public DataSet CreateCmdsAndUpdate(DataSet dataSet, string connectionString,
string queryString)
{
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
OleDbDataAdapter adapter = new OleDbDataAdapter();
adapter.SelectCommand = new OleDbCommand(queryString, connection);
OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter); connection.Open(); DataSet customers = new DataSet();
adapter.Fill(customers); //code to modify data in dataset here adapter.Update(customers); return customers;
}
}