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. 【2016.4.6】结对编程 终章 THE END

  2. 【实践报告】Linux实践三

    Linux实践——程序破解 一.掌握NOP.JNE.JE.JMP.CMP汇编指令的机器码 NOP:NOP指令即“空指令”.执行到NOP指令时,CPU什么也不做,仅仅当做一个指令执行过去并继续执行NOP ...

  3. Linux 实验一 基础实践

    Linux 实践一 1:软件源的维护方法 删掉DEB打头的 在命令行中输入命令时,可以用命令补全的方法. 下载完成后,使用sudo dpkg-i skype.deb 来完成安装. 2:掌握Linux ...

  4. Leetcode——32.最长有效括号【##】

    @author: ZZQ @software: PyCharm @file: leetcode32_最长有效括号.py @time: 2018/11/22 19:19 要求:给定一个只包含 '(' 和 ...

  5. 第一个Sprint

    项目名字:四则运算APP 开发环境:java 团队名称:会飞的小鸟 团队成员:陈志棚  李炫宗   刘芮熔  徐侃  罗伟业 一.经过宿舍世纪讨论后我们剔除了一些不合理的设计,比如网站管理员这一部分在 ...

  6. HDU 2053 Switch Game

    http://acm.hdu.edu.cn/showproblem.php?pid=2053 Problem Description There are many lamps in a line. A ...

  7. 传输层中的协议 TCP & UDP

    面向连接的TCP协议 “面向连接”就是在正式通信前必须要与对方建立起连接.比如你给别人打电话,必须等线路接通了.对方拿起话筒才能相互通话.TCP(Transmission Control Protoc ...

  8. wps word改多级编号为2.1

    右键标题1, 修改样式 编号 多级编号 标题1 2 3 右键标题2 修改样式 选择格式-编号 选择多级编号-标题1 2 3 直接点确定,OK. ---------------------------- ...

  9. Ionic3.x设置启动页与图标

    由于手机有很多不同的尺寸与版本,所以图标尺寸也是大小不一,但是如果手动每一个尺寸都制作一个图标,那估计美工会吐血吧,不过幸好,ionic只需要一个图标就可以制作不同尺寸的图标. 添加一个ionic项目 ...

  10. Personal Software Process (PSP)

    日期 分类 开始时间 结束时间 中断时间 净时间 活动 备注 C U 2016/03/15 随笔 9:30 10:40 0 70 博客更新 更新<软件项目管理(1)> Y Minute 随 ...