C#ADO.NET基础二
2024-09-28 20:20:08
DataAdapter的使用,批量增删改
1.使用DataAdapter查询
private void Select2()
{
try
{
using (SQLiteConnection conn = new SQLiteConnection(connStrl))
{
conn.Open();
using (SQLiteCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "select name,age from test";
DataTable dataTable = new DataTable();
SQLiteDataAdapter adapter = new SQLiteDataAdapter(cmd);
adapter.Fill(dataTable); if (dataTable != null)
{
for (int i = ; i < dataTable.Rows.Count; i++)
{
DataRow row = dataTable.Rows[i];
string name = row["name"].ToString();
int age = int.Parse(row["age"].ToString()); textBox1.Text += $"name:{name} age:{age}\r\n";
}
}
}
}
}
catch (Exception)
{
throw;
}
}
2.批量增
private void btnBatchAdd_Click(object sender, EventArgs e)
{
try
{
using (SQLiteConnection conn = new SQLiteConnection(connStrl))
{
conn.Open();
using (SQLiteCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "select id,name,age from test";
DataTable dataTable = new DataTable();
SQLiteDataAdapter adapter = new SQLiteDataAdapter(cmd);
adapter.Fill(dataTable); for (int i = ; i < ; i++)
dataTable.Rows.Add(null, "张8", ); SQLiteCommandBuilder builder = new SQLiteCommandBuilder(adapter);
adapter.Update(dataTable.GetChanges());
dataTable.AcceptChanges();
}
}
}
catch (Exception ex)
{
throw;
}
}
3.批量改
private void btnBatchUpdate_Click(object sender, EventArgs e)
{
try
{
using (SQLiteConnection conn = new SQLiteConnection(connStrl))
{
conn.Open();
using (SQLiteCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "select id,name,age from test";
DataTable dataTable = new DataTable();
SQLiteDataAdapter adapter = new SQLiteDataAdapter(cmd);
adapter.Fill(dataTable); foreach (DataRow row in dataTable.Rows)
{
if (row["name"].ToString() == "张8")
row["name"] = "张一";
} SQLiteCommandBuilder builder = new SQLiteCommandBuilder(adapter);
adapter.Update(dataTable.GetChanges());
dataTable.AcceptChanges();
}
}
}
catch (Exception ex)
{
throw;
}
}
4.批量删
注意:DataTable的删除只能用 dataTable.Rows[i].Delete()不能用DataRow.RemoveAt和DataRow.Remove,否则更新数据库不成功
参考:https://www.cnblogs.com/zouhao/p/9977767.html
private void btnBatchDelete_Click(object sender, EventArgs e)
{
try
{
using (SQLiteConnection conn = new SQLiteConnection(connStrl))
{
conn.Open();
using (SQLiteCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "select id,name,age from test";
DataTable dataTable = new DataTable();
SQLiteDataAdapter adapter = new SQLiteDataAdapter(cmd);
adapter.Fill(dataTable); for (int i = ; i < dataTable.Rows.Count; i++)
dataTable.Rows[i].Delete(); SQLiteCommandBuilder builder = new SQLiteCommandBuilder(adapter);
adapter.Update(dataTable.GetChanges());
dataTable.AcceptChanges();
}
}
}
catch (Exception ex)
{
throw;
}
}
5.总结
针对DataSet或者DataTable进行的增,删,改操作,可以合在一起批量执行。
最新文章
- MVC使用内建的Form辅助器方法创建Select元素
- 客户端JS性能的一些优化的小技巧
- Master-Worker模式
- ie6双边距bug及其解决办法
- visio2010去除直线交叉处的跨线
- Android开发之Action Bar
- PHP学习路径
- AC自己主动机 总结
- window.history.back()的改进方法window.history.go()
- 数据挖掘概念与技术15--为快速高维OLAP预计算壳片段
- java1.8--OptionalInt,OptionalDouble,OptionalLong类
- Android属性动画 nineoldandroids
- PHP调用Python接口过程中所遇到的问题
- [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.2:compile (default-compile) on project taotao-manager-pojo: Compilation failure
- http重定向到https
- 【转】MVC5学习笔记 BindAttribute
- 浏览器css hack
- TCP/IP四层与OSI七层模型
- How a non-windowed component can receive messages from Windows
- python之系统命令
热门文章
- 解决eclipse Blocked : the user operation is waiting
- 【转】使用Jmeter针对ActiveMQ JMS Point To Point压力测试
- 微服务监控之二:Metrics+influxdb+grafana构建监控平台
- Effective java笔记2--创建于销毁对象
- 1078 Hashing
- Py修行路 python基础 (二十四)socket编程
- class function
- jquery-attr与prop
- NMS:Non-maximum Suppression学习笔记
- 修改eclipse默认workspace