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进行的增,删,改操作,可以合在一起批量执行。

最新文章

  1. MVC使用内建的Form辅助器方法创建Select元素
  2. 客户端JS性能的一些优化的小技巧
  3. Master-Worker模式
  4. ie6双边距bug及其解决办法
  5. visio2010去除直线交叉处的跨线
  6. Android开发之Action Bar
  7. PHP学习路径
  8. AC自己主动机 总结
  9. window.history.back()的改进方法window.history.go()
  10. 数据挖掘概念与技术15--为快速高维OLAP预计算壳片段
  11. java1.8--OptionalInt,OptionalDouble,OptionalLong类
  12. Android属性动画 nineoldandroids
  13. PHP调用Python接口过程中所遇到的问题
  14. [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.2:compile (default-compile) on project taotao-manager-pojo: Compilation failure
  15. http重定向到https
  16. 【转】MVC5学习笔记 BindAttribute
  17. 浏览器css hack
  18. TCP/IP四层与OSI七层模型
  19. How a non-windowed component can receive messages from Windows
  20. python之系统命令

热门文章

  1. 解决eclipse Blocked : the user operation is waiting
  2. 【转】使用Jmeter针对ActiveMQ JMS Point To Point压力测试
  3. 微服务监控之二:Metrics+influxdb+grafana构建监控平台
  4. Effective java笔记2--创建于销毁对象
  5. 1078 Hashing
  6. Py修行路 python基础 (二十四)socket编程
  7. class function
  8. jquery-attr与prop
  9. NMS:Non-maximum Suppression学习笔记
  10. 修改eclipse默认workspace