请问datagridview如何做到批量保存修改后的数据到数据库?
我现在的方法只能修改一条或是添加一条 保存一次 ,很不方便 所以想知道如何做到批量操作
在网上搜到了几个代码 但测试下感觉效果不是很理想,会丢数据
请问大家工作中是如何处理的?希望给段代码学习下 50分感谢
我现在的方法只能修改一条或是添加一条 保存一次 ,很不方便 所以想知道如何做到批量操作
在网上搜到了几个代码 但测试下感觉效果不是很理想,会丢数据
请问大家工作中是如何处理的?希望给段代码学习下 50分感谢
解决方案 »
- 如何做“插件化软件”,“模块化软件”设计。
- 急。。。关于视频监控。。 高分!!!!!!
- not all code paths return a value
- 急求C#编写的斑马打印机的打印程序,可以打印二唯条码
- 线性转换问题
- 关于Java和C#线程模型的问题,线程如何拥有自己的东西???
- datagrid的一个很简单且经典的保存到数据库的问题(我想很多朋友也碰到过吧,请问是怎么解决的)
- vs.net环境,一个工程里面有一堆FORM,我怎么选定一个为主窗口啊?
- C#中的开方函数是如何?
- 你们的项目奖金是百分之几呀?
- “Clone”方法没有采用“2”个参数的重载
- 扑克牌游戏,这个哪错了,谁给指点指点啊
/// 执行多条SQL语句,实现数据库事务。
/// </summary>
/// <param name="sqlStringList">SQL语句的哈希表(key为sql语句,value是该语句的SqlParameter[])</param>
public static void ExecuteSqlTran(Hashtable sqlStringList)
{
using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();
using (SqlTransaction trans = conn.BeginTransaction())
{
SqlCommand cmd = new SqlCommand();
try
{
//循环
foreach (DictionaryEntry myDE in sqlStringList)
{
string cmdText = myDE.Key.ToString();
SqlParameter[] cmdParms = (SqlParameter[])myDE.Value;
PrepareCommand(cmd, conn, trans, cmdText, CommandType.Text, cmdParms);
int val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
}
trans.Commit();
}
catch
{
trans.Rollback();
throw;
}
}
}
}
public BindingSource bindingStlyeMaterial = new BindingSource();
public DataTable dtStlyeMaterial = new DataTable();
public SqlCommandBuilder builderMaterial = new SqlCommandBuilder(); private 给datagridview加数据源
{
string str = "select * from table";
daStlyeMaterial = new SqlDataAdapter(str,[email protected]());
builderMaterial = new SqlCommandBuilder(daStlyeMaterial);
daStlyeMaterial.Fill(dtStlyeMaterial);
datagridview1.DataSource=dtStlyeMaterial;
} private void butn_ks_bc_Click(object sender, EventArgs e)
{
bindingStlyeMaterial.EndEdit();
daStlyeMaterial.Update(dtStlyeMaterial);
}
@"Data Source=HUI\SQLSERVER;Initial Catalog=Northwind;Integrated Security=True"); SqlDataAdapter thisAdapter = new SqlDataAdapter(
"SELECT CustomerID, CompanyName FROM Customers", thisConnection); //定义一个SqlCommandBuilder
SqlCommandBuilder thisBuilder = new SqlCommandBuilder(thisAdapter); DataSet thisDataSet = new DataSet();
thisAdapter.Fill(thisDataSet, "Customers"); //用thisDataSet.Tables["Customers"]填充datagridview
//更新datagridview的同时更新thisDataSet.Tables["Customers"]内的相应字段
for(int i=0; i<9; i++)
thisDataSet.Tables["Customers"].Rows[i]["CompanyName"] = "string"+i.ToString(); thisAdapter.Update(thisDataSet, "Customers"); //一次性提交更新 thisConnection.Close();
changedTalbe = dt.GetChanges(DataRowState.Unchanged);
changedTalbe 是没有发生变化的数据 //新增的
changedTalbe = dt.GetChanges(DataRowState.Added);
//修改的
changedTalbe = dt.GetChanges(DataRowState.Modified);
//删除的
changedTalbe = dt.GetChanges(DataRowState.Deleted);
SqlConnection con = new SqlConnection("server='localhost';database='Work';user='sa';password='123'");
SqlCommand cmd = new SqlCommand();
cmd = con.CreateCommand();
cmd.CommandText = "select * from Table_gongzi";
SqlDataAdapter da = new SqlDataAdapter(cmd);
SqlCommandBuilder cb = new SqlCommandBuilder(da);
da.Update(ds.Tables[0]);
dataGridView1.Update();
我用下面的代码修改了上面的代码后 却实现不了功能 不知道为什么
SqlConnection con = new SqlConnection("server='localhost';database='Work';user='sa';password='123'");
SqlCommand cmd = new SqlCommand("select * from Table_gongzi",con);
// cmd = con.CreateCommand();
//cmd.CommandText = "select * from Table_gongzi";
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
SqlCommandBuilder cb = new SqlCommandBuilder(da);
da.Update(ds.Tables[0]);
dataGridView1.Update();
然后他会根据你提供的查询语句,生成插入,修改,删除语句
再根据DataTable对应的数据行状态来调用对应的语句执行数据库操作