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. Linux内核设计第十七章笔记

    第十七章 设备与模块 关于设备驱动和设备管理,四种内核成分 设备类型:在所有unix系统中为了统一普通设备的操作所采用的分类 模块:Linux内核中用于按需加载和卸载目标代码的机制 内核对象:内核数据 ...

  2. 转发:Android开发?用C#!!

    转发自 最近偶然在QQ技术群里见到有人提起用C#开发Android,当时我感觉到很诧异:Android不是只能用Java开发吗?何时可以使用C#了?那个群友便告知我:mono. 百度一下吧!搜到了mo ...

  3. FreeMaker使用HashMap

    private Map<String, Object> variables; <input type="hidden" id="tongzhisbm&q ...

  4. Server Tomcat v7.0 Server at libra failed to start

    https://stackoverflow.com/questions/13244233/server-tomcat-v7-0-server-at-localhost-failed-to-start- ...

  5. React onWheel

    <!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8" ...

  6. centos目录

    cd /opt cd /home/lujie cd /etc cd /usr cd /dev cd /bin cd /mnt cd /media cd /tmp

  7. golang自定义struct字段标签

    原文链接: https://sosedoff.com/2016/07/16/golang-struct-tags.html struct是golang中最常使用的变量类型之一,几乎每个地方都有使用,从 ...

  8. java构造函数总结

    构造函数总结 概念:    创建对象时由JVM自动调用的函数 作用:    在创建对象的时候给对象的成员变量赋值: 写法: 修饰符:可以用访问权限修饰符(public.private等)修饰:不能用s ...

  9. Harmonic Number LightOJ - 1234 (分段打表)

    题意: 求调和级数,但n很大啦.. 解析: 分段打表  每间隔50存储一个数,在计算时  只需要找到离输入的n最近的那个数 以它为起点 开始计算即可 emm...补充一下调和级数的运算公式   r为常 ...

  10. mysql 免安装版 启动服务马上关闭

    在my.ini 加入这一句 1.直接在后面加上一下的参数 [mysqld] port=3306 basedir=D:\mysql-5.7.17-win32 datadir=D:\mysql-5.7.1 ...