C#使用Ado.Net读写数据库

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. }
上一篇:【codeforces 516B】Drazil and Tiles


下一篇:Effective Scala