1.使用DataReader方式读取资料

[csharp] view
plain
 copy

  1. String connString = ConfigurationManager.ConnectionStrings["astt"].ConnectionString;
  2. //如果数据库连接字符串有加密,可以经过解密后重新获得连接字符串
  3. DbConnectionStringBuilder connBuilder = new DbConnectionStringBuilder();
  4. connBuilder.ConnectionString = connString;
  5. connBuilder["Data Source"] = connBuilder["Data Source"];  //可加上解密方法
  6. connBuilder["User ID"] = connBuilder["User ID"];          //可加上解密方法
  7. connBuilder["Password"] = connBuilder["Password"];        //可加上解密方法
  8. connString = connBuilder.ConnectionString;
  9. using (OleDbConnection conn = new OleDbConnection(connString))
  10. {
  11. try
  12. {
  13. conn.Open();
  14. using (OleDbCommand cmd = new OleDbCommand())
  15. {
  16. cmd.CommandText = "select * from s_userm where rownum <= ?";
  17. cmd.CommandType = CommandType.Text;
  18. cmd.Connection = conn;
  19. cmd.Parameters.Add("?", OleDbType.Integer).Value = 5;  //cmd.Parameters.Add(new OleDbParameter("?", 5));
  20. using (OleDbDataReader reader = cmd.ExecuteReader())
  21. {
  22. while (reader.Read())
  23. {
  24. MessageBox.Show(reader.GetString(1), "资料");
  25. }
  26. }
  27. }
  28. conn.Close();
  29. }
  30. catch (Exception ex)
  31. {
  32. MessageBox.Show(ex.Message, "error");
  33. return;
  34. }
  35. }

2.使用DataAdapter与DataSet方式读取资料.

[csharp] view
plain
 copy

  1. String connString = ConfigurationManager.ConnectionStrings["astt"].ConnectionString;
  2. using (OleDbConnection conn = new OleDbConnection(connString))
  3. {
  4. try
  5. {
  6. using (OleDbCommand cmd = new OleDbCommand())
  7. {
  8. cmd.CommandText = "select * from s_userm where rownum <= ?";
  9. cmd.CommandType = CommandType.Text;
  10. cmd.Connection = conn;
  11. cmd.Parameters.Add("?", OleDbType.Integer).Value = 5;  //cmd.Parameters.Add(new OleDbParameter("?", 5));
  12. DataSet ds = new DataSet();
  13. OleDbDataAdapter adapter = new OleDbDataAdapter(cmd);
  14. adapter.Fill(ds, "s_userm");
  15. foreach (DataRow dr in ds.Tables[0].Rows)
  16. {
  17. MessageBox.Show(Convert.ToString(dr["user_nm"]), "资料");
  18. }
  19. //listBox1.DataSource = ds.Tables[0].DefaultView;
  20. //listBox1.DisplayMember = "user_nm";
  21. //listBox1.ValueMember = "user_no";
  22. listBox1.DataSource = ds;
  23. listBox1.DisplayMember = "s_userm.user_nm";
  24. listBox1.ValueMember = "s_userm.user_no";
  25. dataGridView1.DataSource = ds.Tables[0].DefaultView;
  26. dataGridView1.ReadOnly = true;
  27. }
  28. }
  29. catch (Exception ex)
  30. {
  31. MessageBox.Show(ex.Message, "error");
  32. return;
  33. }
  34. }

3.使用DataAdapter与DataSet对单表的增删改查,根据Command的查询语法,使用CommandBuilder自动生成增删改的语法.

[csharp] view
plain
 copy

  1. String connString = ConfigurationManager.ConnectionStrings["astt"].ConnectionString;
  2. using (OleDbConnection conn = new OleDbConnection(connString))
  3. {
  4. OleDbCommand cmd = new OleDbCommand();
  5. cmd.CommandText = "select * from s_userm where rownum <= ?";
  6. cmd.CommandType = CommandType.Text;
  7. cmd.Connection = conn;
  8. cmd.Parameters.Add("?", OleDbType.Integer).Value = 5;
  9. OleDbDataAdapter adapter = new OleDbDataAdapter(cmd);
  10. //使用DataAdapter更新单表,可以使用CommandBuilder来自动生成InsertCommand,UpdateCommand,DeleteCommand
  11. OleDbCommandBuilder cmdbuilder = new OleDbCommandBuilder(adapter); //将自动生成InsertCommand,UpdateCommand,DeleteCommand
  12. MessageBox.Show(cmdbuilder.GetUpdateCommand().CommandText, "updcommand");
  13. //select
  14. DataSet ds = new DataSet();
  15. adapter.Fill(ds,"s_userm");
  16. dataGridView1.DataSource = ds.Tables["s_userm"].DefaultView;
  17. //insert
  18. DataRow updateRow = ds.Tables["s_userm"].NewRow();
  19. updateRow["user_no"] = "TEST1";
  20. updateRow["user_nm"] = "test1";
  21. ds.Tables["s_userm"].Rows.Add(updateRow);
  22. adapter.Update(ds, "s_userm");
  23. MessageBox.Show(Convert.ToString(ds.Tables["s_userm"].Rows[0]["user_no"]), "user");
  24. //update
  25. ds.Tables[0].Rows[1]["EMAIL"] = "gymsoft@163.com";
  26. adapter.Update(ds, "s_userm");
  27. //delete
  28. ds.Tables["s_userm"].Rows[0].Delete();
  29. adapter.Update(ds, "s_userm");
  30. }

4.使用DataAdapter与DataSet进行增删改查,手动指定增删改查的语法。

[csharp] view
plain
 copy

  1. String connString = ConfigurationManager.ConnectionStrings["astt"].ConnectionString;
  2. using (OleDbConnection conn = new OleDbConnection(connString))
  3. {
  4. DataSet ds = new DataSet();
  5. OleDbDataAdapter adapter = new OleDbDataAdapter();
  6. //指定DataAdapter的select语句
  7. OleDbCommand selectCmd = new OleDbCommand();
  8. selectCmd.CommandText = "select * from s_userm where rownum <= ?";
  9. selectCmd.CommandType = CommandType.Text;
  10. selectCmd.Connection = conn;
  11. selectCmd.Parameters.Add("?", OleDbType.Integer).Value = 5;
  12. adapter.SelectCommand = selectCmd;
  13. //指定DataAdapter的Insert语句
  14. OleDbCommand insertCmd = new OleDbCommand();
  15. insertCmd.CommandText = "insert into s_userm(user_no,user_nm) values(?,?)";
  16. insertCmd.CommandType = CommandType.Text;
  17. insertCmd.Connection = conn;
  18. insertCmd.Parameters.Add("?", OleDbType.VarChar, 30, "user_no");
  19. insertCmd.Parameters.Add("?", OleDbType.VarChar, 80, "user_nm");
  20. adapter.InsertCommand = insertCmd;
  21. //指定DataAdapter的Update语句
  22. OleDbCommand updateCmd = new OleDbCommand();
  23. updateCmd.CommandText = "update s_userm set email = ? where user_no = ?";
  24. updateCmd.CommandType = CommandType.Text;
  25. updateCmd.Connection = conn;
  26. updateCmd.Parameters.Add("?", OleDbType.VarChar, 50, "email");
  27. OleDbParameter parmUpdPk = updateCmd.Parameters.Add("?", OleDbType.VarChar, 30, "user_no");
  28. parmUpdPk.SourceVersion = DataRowVersion.Original;
  29. adapter.UpdateCommand = updateCmd;
  30. //指定DataAdapter的Delete语句
  31. OleDbCommand deleteCmd = new OleDbCommand();
  32. deleteCmd.CommandText = "delete from s_userm where user_no = ?";
  33. deleteCmd.CommandType = CommandType.Text;
  34. deleteCmd.Connection = conn;
  35. OleDbParameter parmDelPk = deleteCmd.Parameters.Add("?", OleDbType.VarChar, 30, "user_no");
  36. parmDelPk.SourceVersion = DataRowVersion.Original;
  37. adapter.DeleteCommand = deleteCmd;
  38. MessageBox.Show(adapter.SelectCommand.CommandText, "command");
  39. //select
  40. adapter.Fill(ds, "s_userm");
  41. dataGridView1.DataSource = ds.Tables["s_userm"].DefaultView;
  42. //insert
  43. DataRow updateRow = ds.Tables["s_userm"].NewRow();
  44. updateRow["user_no"] = "TEST2";
  45. updateRow["user_nm"] = "test2";
  46. ds.Tables["s_userm"].Rows.Add(updateRow);
  47. adapter.Update(ds, "s_userm");
  48. MessageBox.Show(Convert.ToString(ds.Tables["s_userm"].Rows[3]["user_no"]), "user");
  49. //update
  50. ds.Tables[0].Rows[3]["EMAIL"] = "gymsoft@163.com";
  51. adapter.Update(ds, "s_userm");
  52. //delete
  53. ds.Tables["s_userm"].Rows[3].Delete();
  54. adapter.Update(ds, "s_userm");
  55. }

5.使用DataGridView绑定数据源进行编辑,使用DataAdapter与DataSet进行增删改查,手动指定增删改查的语法。

[csharp] view
plain
 copy

  1. public partial class Form1 : Form
  2. {
  3. String connString;
  4. OleDbConnection conn;
  5. DataSet ds;
  6. OleDbDataAdapter adapter;
  7. public Form1()
  8. {
  9. InitializeComponent();
  10. }
  11. private void buttonQuery_Click(object sender, EventArgs e)
  12. {
  13. connString = ConfigurationManager.ConnectionStrings["astt"].ConnectionString;
  14. conn = new OleDbConnection(connString);
  15. ds = new DataSet();
  16. adapter = new OleDbDataAdapter();
  17. //指定DataAdapter的select语句
  18. OleDbCommand selectCmd = new OleDbCommand();
  19. selectCmd.CommandText = "select * from s_userm where rownum <= ?";
  20. selectCmd.CommandType = CommandType.Text;
  21. selectCmd.Connection = conn;
  22. selectCmd.Parameters.Add("?", OleDbType.Integer).Value = 5;
  23. adapter.SelectCommand = selectCmd;
  24. //指定DataAdapter的Insert语句
  25. OleDbCommand insertCmd = new OleDbCommand();
  26. insertCmd.CommandText = "insert into s_userm(user_no,user_nm) values(?,?)";
  27. insertCmd.CommandType = CommandType.Text;
  28. insertCmd.Connection = conn;
  29. insertCmd.Parameters.Add("?", OleDbType.VarChar, 30, "user_no");
  30. insertCmd.Parameters.Add("?", OleDbType.VarChar, 80, "user_nm");
  31. adapter.InsertCommand = insertCmd;
  32. //指定DataAdapter的Update语句
  33. OleDbCommand updateCmd = new OleDbCommand();
  34. updateCmd.CommandText = "update s_userm set email = ? where user_no = ?";
  35. updateCmd.CommandType = CommandType.Text;
  36. updateCmd.Connection = conn;
  37. updateCmd.Parameters.Add("?", OleDbType.VarChar, 50, "email");
  38. OleDbParameter parmUpdPk = updateCmd.Parameters.Add("?", OleDbType.VarChar, 30, "user_no");
  39. parmUpdPk.SourceVersion = DataRowVersion.Original;
  40. adapter.UpdateCommand = updateCmd;
  41. //指定DataAdapter的Delete语句
  42. OleDbCommand deleteCmd = new OleDbCommand();
  43. deleteCmd.CommandText = "delete from s_userm where user_no = ?";
  44. deleteCmd.CommandType = CommandType.Text;
  45. deleteCmd.Connection = conn;
  46. OleDbParameter parmDelPk = deleteCmd.Parameters.Add("?", OleDbType.VarChar, 30, "user_no");
  47. parmDelPk.SourceVersion = DataRowVersion.Original;
  48. adapter.DeleteCommand = deleteCmd;
  49. //MessageBox.Show(adapter.SelectCommand.CommandText, "command");
  50. //select
  51. adapter.Fill(ds, "s_userm");
  52. dataGridView1.DataSource = ds.Tables["s_userm"].DefaultView;
  53. }
  54. private void buttonSave_Click(object sender, EventArgs e)
  55. {
  56. adapter.Update(ds, "s_userm");
  57. ds.Clear();
  58. adapter.Fill(ds, "s_userm");
  59. dataGridView1.DataSource = ds.Tables["s_userm"].DefaultView;
  60. }
  61. }

6.使用DataAdapter与DataSet,以事务的方式进行增删改查。

[csharp] view
plain
 copy

  1. String connString = ConfigurationManager.ConnectionStrings["astt"].ConnectionString;
  2. using (OleDbConnection conn = new OleDbConnection(connString))
  3. {
  4. DataSet ds = new DataSet();
  5. OleDbDataAdapter adapter = new OleDbDataAdapter();
  6. //指定DataAdapter的select语句
  7. OleDbCommand selectCmd = new OleDbCommand();
  8. selectCmd.CommandText = "select * from s_userm where rownum <= ?";
  9. selectCmd.CommandType = CommandType.Text;
  10. selectCmd.Connection = conn;
  11. selectCmd.Parameters.Add("?", OleDbType.Integer).Value = 5;
  12. adapter.SelectCommand = selectCmd;
  13. //指定DataAdapter的Insert语句
  14. OleDbCommand insertCmd = new OleDbCommand();
  15. insertCmd.CommandText = "insert into s_userm(user_no,user_nm) values(?,?)";
  16. insertCmd.CommandType = CommandType.Text;
  17. insertCmd.Connection = conn;
  18. insertCmd.Parameters.Add("?", OleDbType.VarChar, 30, "user_no");
  19. insertCmd.Parameters.Add("?", OleDbType.VarChar, 80, "user_nm");
  20. adapter.InsertCommand = insertCmd;
  21. //指定DataAdapter的Update语句
  22. OleDbCommand updateCmd = new OleDbCommand();
  23. updateCmd.CommandText = "update s_userm set email = ? where user_no = ?";
  24. updateCmd.CommandType = CommandType.Text;
  25. updateCmd.Connection = conn;
  26. updateCmd.Parameters.Add("?", OleDbType.VarChar, 50, "email");
  27. OleDbParameter parmUpdPk = updateCmd.Parameters.Add("?", OleDbType.VarChar, 30, "user_no");
  28. parmUpdPk.SourceVersion = DataRowVersion.Original;
  29. adapter.UpdateCommand = updateCmd;
  30. //指定DataAdapter的Delete语句
  31. OleDbCommand deleteCmd = new OleDbCommand();
  32. deleteCmd.CommandText = "delete from s_userm where user_no = ?";
  33. deleteCmd.CommandType = CommandType.Text;
  34. deleteCmd.Connection = conn;
  35. OleDbParameter parmDelPk = deleteCmd.Parameters.Add("?", OleDbType.VarChar, 30, "user_no");
  36. parmDelPk.SourceVersion = DataRowVersion.Original;
  37. adapter.DeleteCommand = deleteCmd;
  38. //MessageBox.Show(adapter.SelectCommand.CommandText, "command");
  39. conn.Open();
  40. using (OleDbTransaction tran = conn.BeginTransaction(IsolationLevel.ReadCommitted))
  41. {
  42. adapter.SelectCommand.Transaction = tran;
  43. adapter.InsertCommand.Transaction = tran;
  44. adapter.UpdateCommand.Transaction = tran;
  45. adapter.DeleteCommand.Transaction = tran;
  46. try
  47. {
  48. //select
  49. adapter.Fill(ds, "s_userm");
  50. dataGridView1.DataSource = ds.Tables["s_userm"].DefaultView;
  51. //insert
  52. DataRow updateRow = ds.Tables["s_userm"].NewRow();
  53. updateRow["user_no"] = "TEST2";
  54. updateRow["user_nm"] = "test2";
  55. ds.Tables["s_userm"].Rows.Add(updateRow);
  56. adapter.Update(ds, "s_userm");
  57. //MessageBox.Show(Convert.ToString(ds.Tables["s_userm"].Rows[3]["user_no"]), "user");
  58. //update
  59. ds.Tables[0].Rows[3]["EMAIL"] = "gymsoft@163.com";
  60. adapter.Update(ds, "s_userm");
  61. //delete
  62. ds.Tables["s_userm"].Rows[3].Delete();
  63. adapter.Update(ds, "s_userm");
  64. tran.Commit();
  65. }
  66. catch (Exception ex)
  67. {
  68. try
  69. {
  70. tran.Rollback();
  71. }
  72. catch (Exception exc)
  73. {
  74. MessageBox.Show(exc.Message, "error");
  75. }
  76. MessageBox.Show(ex.Message, "error");
  77. }
  78. }
  79. conn.Close();
  80. }

C#使用Ado.Net读写数据库的更多相关文章

  1. .NET基础拾遗(6)ADO.NET与数据库开发基础

    Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开发基 ...

  2. .NET基础拾遗(8)ADO.NET与数据库开发基础

    1.1 ADO.NET支持哪几种数据源? ① System.Data.SqlClient .NET程序员最常用的了.通过OLEDB或者ODBC都可以访问,但是SqlClient下的组件直接针对MSSQ ...

  3. Delphi通过ADO读写数据库

    ADO是一种程序对象,用于表示用户数据库中的数据结构和所包含的数据. ADO (ActiveX Data Objects,ActiveX数据对象)是Microsoft提出的应用程序接口(API)用以实 ...

  4. Wcf for wp8 连接数据库,读写数据库,显示数据库数据(二)

    下载: Microsoft® SQL Server® 2012 Express http://www.microsoft.com/zh-cn/download/details.aspx?id=2906 ...

  5. ADO访问Access数据库错误解决心得随笔

    最近在用ADO访问Access数据库的时候出现了一个奇怪的错误,觉得有必要记录下来,和大家分享一下. 环境 win7 x86系统: VS2012编译器: Office2010: Access2000~ ...

  6. ado无法访问数据库问题

    现象:以ADO方式访问数据库的C++程序,在一台计算机上能访问成功,在另一台计算机上却访问不成功,报告不能连接错误,并且这两台计算机都装有ado. 原因:ado版本不对 解决方案:下载KB983246 ...

  7. 浅析ado.net获取数据库元数据信息 DeriveParameters

    写这个文章源于早先对ADO.Net获取数据库元数据上的认识,去年我在阅读ADO.Net Core Reference的时候曾经注意过DataSet的FillSchema的这个方法.这方面,在我之前的随 ...

  8. MFC,ADO方式实现数据库操作

    参考: MSDN数据访问编程 (MFC/ATL): https://msdn.microsoft.com/zh-cn/library/kd4ck1tt.aspx?f=255&MSPPError ...

  9. 使用 ado.net访问数据库

    一.ADO.NET :用于连接数据库的技术   1.ADO.NET分为两大组件    DataSet:数据集    .NET FRAMWORK :用于连接到数据库,发送命令,检索结果   2.ADO. ...

随机推荐

  1. 总结and规划

    不知不觉中又过去了一年,马上就要读研究生了,因此有必要对自己进行必要的总结,以及对自己有个良好的规划. 首先,描述自己当前的心情——对未来充满了恐惧和焦虑. 马上大学就要毕业了,回首经历的大学生涯,似 ...

  2. 广商博客冲刺第六七天new

    第四五天沖刺傳送門 第一版的網頁已經放到 云服務器(估計快到期了) 傳送門. (不怎么會玩服務器啊..求指教..目前問題如下: 1.我的電腦mysql密碼跟服務器的密碼不一樣..上傳的時候要把代碼里面 ...

  3. 编写一个shell脚本来编译并运行java代码

    概述 编译和运行java分别要用到javac命令和java命令,虽然可以使用IDE(比如eclipse,InteliJ,NetBean...),按一下快捷键就可以实现编译并运行,但是,在之前还要配置一 ...

  4. Node post请求 通常配合ajax

    //处理客户post请求//*1:加载相应模块 http express querystring//*2:创建web服务器//*3:监听端口8080const http = require(" ...

  5. QA

    QA:Quality Assurance,品质保证 IDQA:Individual Document Quality Assurance 设计品质保证 QE:Quantitative Easing 质 ...

  6. 《ERP系统原理与实施》

    第一 采购 第二 生产(生产任务->生产准备->加工单->派工单->生产调度->生产监控->数据采集->统计分析) 第三 仓储 第四 质量 第五 财务 第六 ...

  7. 学习记录特别篇之sql,类的继承

    思路: 应用场景: 1.将父类当做一个基础类 大家都去继承该方法,以便少些代码 2.继承父类的方法 同时可以重写该方法时候调用父类原先的方法 实现一石二鸟的效果 即 既增加原先的功能 又新增新的功能 ...

  8. Fire Net ZOJ - 1002

    题意: 一个n * n 的棋盘 上面有些障碍物  放棋子 棋子不能在同一行 同一列 但可以在同一行或同一列隔着障碍物放 这题与poj1321  的思想差不多 对于一个位置 有两种状态放还是不放 参数i ...

  9. day11 内置函数

    特殊算数运算 计算整数的和 l = [1,2,3,4,5] print(sum(l)) 除法运算,然后取余 在做页面的时候可以根据数据量分页的时候使用 print(divmod(10,3)) # (3 ...

  10. LOJ #2538. 「PKUWC 2018」Slay the Spire (期望dp)

    Update on 1.5 学了 zhou888 的写法,真是又短又快. 并且空间是 \(O(n)\) 的,速度十分优秀. 题意 LOJ #2538. 「PKUWC 2018」Slay the Spi ...