C#使用Ado.Net读写数据库
2013-12-24 17:26
477 查看
C#使用Ado.Net读写数据库
记性不好,记几个C#使用Ado.Net读写数据库的方式,以便随时取用.1.使用DataReader方式读取资料
String connString = ConfigurationManager.ConnectionStrings["astt"].ConnectionString; //如果数据库连接字符串有加密,可以经过解密后重新获得连接字符串 DbConnectionStringBuilder connBuilder = new DbConnectionStringBuilder(); connBuilder.ConnectionString = connString; connBuilder["Data Source"] = connBuilder["Data Source"]; //可加上解密方法 connBuilder["User ID"] = connBuilder["User ID"]; //可加上解密方法 connBuilder["Password"] = connBuilder["Password"]; //可加上解密方法 connString = connBuilder.ConnectionString; using (OleDbConnection conn = new OleDbConnection(connString)) { try { conn.Open(); using (OleDbCommand cmd = new OleDbCommand()) { cmd.CommandText = "select * from s_userm where rownum <= ?"; cmd.CommandType = CommandType.Text; cmd.Connection = conn; cmd.Parameters.Add("?", OleDbType.Integer).Value = 5; //cmd.Parameters.Add(new OleDbParameter("?", 5)); using (OleDbDataReader reader = cmd.ExecuteReader()) { while (reader.Read()) { MessageBox.Show(reader.GetString(1), "资料"); } } } conn.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message, "error"); return; } }
2.使用DataAdapter与DataSet方式读取资料.
String connString = ConfigurationManager.ConnectionStrings["astt"].ConnectionString; using (OleDbConnection conn = new OleDbConnection(connString)) { try { using (OleDbCommand cmd = new OleDbCommand()) { cmd.CommandText = "select * from s_userm where rownum <= ?"; cmd.CommandType = CommandType.Text; cmd.Connection = conn; cmd.Parameters.Add("?", OleDbType.Integer).Value = 5; //cmd.Parameters.Add(new OleDbParameter("?", 5)); DataSet ds = new DataSet(); OleDbDataAdapter adapter = new OleDbDataAdapter(cmd); adapter.Fill(ds, "s_userm"); foreach (DataRow dr in ds.Tables[0].Rows) { MessageBox.Show(Convert.ToString(dr["user_nm"]), "资料"); } //listBox1.DataSource = ds.Tables[0].DefaultView; //listBox1.DisplayMember = "user_nm"; //listBox1.ValueMember = "user_no"; listBox1.DataSource = ds; listBox1.DisplayMember = "s_userm.user_nm"; listBox1.ValueMember = "s_userm.user_no"; dataGridView1.DataSource = ds.Tables[0].DefaultView; dataGridView1.ReadOnly = true; } } catch (Exception ex) { MessageBox.Show(ex.Message, "error"); return; } }
3.使用DataAdapter与DataSet对单表的增删改查,根据Command的查询语法,使用CommandBuilder自动生成增删改的语法.
String connString = ConfigurationManager.ConnectionStrings["astt"].ConnectionString; using (OleDbConnection conn = new OleDbConnection(connString)) { OleDbCommand cmd = new OleDbCommand(); cmd.CommandText = "select * from s_userm where rownum <= ?"; cmd.CommandType = CommandType.Text; cmd.Connection = conn; cmd.Parameters.Add("?", OleDbType.Integer).Value = 5; OleDbDataAdapter adapter = new OleDbDataAdapter(cmd); //使用DataAdapter更新单表,可以使用CommandBuilder来自动生成InsertCommand,UpdateCommand,DeleteCommand OleDbCommandBuilder cmdbuilder = new OleDbCommandBuilder(adapter); //将自动生成InsertCommand,UpdateCommand,DeleteCommand MessageBox.Show(cmdbuilder.GetUpdateCommand().CommandText, "updcommand"); //select DataSet ds = new DataSet(); adapter.Fill(ds,"s_userm"); dataGridView1.DataSource = ds.Tables["s_userm"].DefaultView; //insert DataRow updateRow = ds.Tables["s_userm"].NewRow(); updateRow["user_no"] = "TEST1"; updateRow["user_nm"] = "test1"; ds.Tables["s_userm"].Rows.Add(updateRow); adapter.Update(ds, "s_userm"); MessageBox.Show(Convert.ToString(ds.Tables["s_userm"].Rows[0]["user_no"]), "user"); //update ds.Tables[0].Rows[1]["EMAIL"] = "gymsoft@163.com"; adapter.Update(ds, "s_userm"); //delete ds.Tables["s_userm"].Rows[0].Delete(); adapter.Update(ds, "s_userm"); }
4.使用DataAdapter与DataSet进行增删改查,手动指定增删改查的语法。
String connString = ConfigurationManager.ConnectionStrings["astt"].ConnectionString; using (OleDbConnection conn = new OleDbConnection(connString)) { DataSet ds = new DataSet(); OleDbDataAdapter adapter = new OleDbDataAdapter(); //指定DataAdapter的select语句 OleDbCommand selectCmd = new OleDbCommand(); selectCmd.CommandText = "select * from s_userm where rownum <= ?"; selectCmd.CommandType = CommandType.Text; selectCmd.Connection = conn; selectCmd.Parameters.Add("?", OleDbType.Integer).Value = 5; adapter.SelectCommand = selectCmd; //指定DataAdapter的Insert语句 OleDbCommand insertCmd = new OleDbCommand(); insertCmd.CommandText = "insert into s_userm(user_no,user_nm) values(?,?)"; insertCmd.CommandType = CommandType.Text; insertCmd.Connection = conn; insertCmd.Parameters.Add("?", OleDbType.VarChar, 30, "user_no"); insertCmd.Parameters.Add("?", OleDbType.VarChar, 80, "user_nm"); adapter.InsertCommand = insertCmd; //指定DataAdapter的Update语句 OleDbCommand updateCmd = new OleDbCommand(); updateCmd.CommandText = "update s_userm set email = ? where user_no = ?"; updateCmd.CommandType = CommandType.Text; updateCmd.Connection = conn; updateCmd.Parameters.Add("?", OleDbType.VarChar, 50, "email"); OleDbParameter parmUpdPk = updateCmd.Parameters.Add("?", OleDbType.VarChar, 30, "user_no"); parmUpdPk.SourceVersion = DataRowVersion.Original; adapter.UpdateCommand = updateCmd; //指定DataAdapter的Delete语句 OleDbCommand deleteCmd = new OleDbCommand(); deleteCmd.CommandText = "delete from s_userm where user_no = ?"; deleteCmd.CommandType = CommandType.Text; deleteCmd.Connection = conn; OleDbParameter parmDelPk = deleteCmd.Parameters.Add("?", OleDbType.VarChar, 30, "user_no"); parmDelPk.SourceVersion = DataRowVersion.Original; adapter.DeleteCommand = deleteCmd; MessageBox.Show(adapter.SelectCommand.CommandText, "command"); //select adapter.Fill(ds, "s_userm"); dataGridView1.DataSource = ds.Tables["s_userm"].DefaultView; //insert DataRow updateRow = ds.Tables["s_userm"].NewRow(); updateRow["user_no"] = "TEST2"; updateRow["user_nm"] = "test2"; ds.Tables["s_userm"].Rows.Add(updateRow); adapter.Update(ds, "s_userm"); MessageBox.Show(Convert.ToString(ds.Tables["s_userm"].Rows[3]["user_no"]), "user"); //update ds.Tables[0].Rows[3]["EMAIL"] = "gymsoft@163.com"; adapter.Update(ds, "s_userm"); //delete ds.Tables["s_userm"].Rows[3].Delete(); adapter.Update(ds, "s_userm"); }
5.使用DataGridView绑定数据源进行编辑,使用DataAdapter与DataSet进行增删改查,手动指定增删改查的语法。
public partial class Form1 : Form { String connString; OleDbConnection conn; DataSet ds; OleDbDataAdapter adapter; public Form1() { InitializeComponent(); } private void buttonQuery_Click(object sender, EventArgs e) { connString = ConfigurationManager.ConnectionStrings["astt"].ConnectionString; conn = new OleDbConnection(connString); ds = new DataSet(); adapter = new OleDbDataAdapter(); //指定DataAdapter的select语句 OleDbCommand selectCmd = new OleDbCommand(); selectCmd.CommandText = "select * from s_userm where rownum <= ?"; selectCmd.CommandType = CommandType.Text; selectCmd.Connection = conn; selectCmd.Parameters.Add("?", OleDbType.Integer).Value = 5; adapter.SelectCommand = selectCmd; //指定DataAdapter的Insert语句 OleDbCommand insertCmd = new OleDbCommand(); insertCmd.CommandText = "insert into s_userm(user_no,user_nm) values(?,?)"; insertCmd.CommandType = CommandType.Text; insertCmd.Connection = conn; insertCmd.Parameters.Add("?", OleDbType.VarChar, 30, "user_no"); insertCmd.Parameters.Add("?", OleDbType.VarChar, 80, "user_nm"); adapter.InsertCommand = insertCmd; //指定DataAdapter的Update语句 OleDbCommand updateCmd = new OleDbCommand(); updateCmd.CommandText = "update s_userm set email = ? where user_no = ?"; updateCmd.CommandType = CommandType.Text; updateCmd.Connection = conn; updateCmd.Parameters.Add("?", OleDbType.VarChar, 50, "email"); OleDbParameter parmUpdPk = updateCmd.Parameters.Add("?", OleDbType.VarChar, 30, "user_no"); parmUpdPk.SourceVersion = DataRowVersion.Original; adapter.UpdateCommand = updateCmd; //指定DataAdapter的Delete语句 OleDbCommand deleteCmd = new OleDbCommand(); deleteCmd.CommandText = "delete from s_userm where user_no = ?"; deleteCmd.CommandType = CommandType.Text; deleteCmd.Connection = conn; OleDbParameter parmDelPk = deleteCmd.Parameters.Add("?", OleDbType.VarChar, 30, "user_no"); parmDelPk.SourceVersion = DataRowVersion.Original; adapter.DeleteCommand = deleteCmd; //MessageBox.Show(adapter.SelectCommand.CommandText, "command"); //select adapter.Fill(ds, "s_userm"); dataGridView1.DataSource = ds.Tables["s_userm"].DefaultView; } private void buttonSave_Click(object sender, EventArgs e) { adapter.Update(ds, "s_userm"); ds.Clear(); adapter.Fill(ds, "s_userm"); dataGridView1.DataSource = ds.Tables["s_userm"].DefaultView; } }
6.使用DataAdapter与DataSet,以事务的方式进行增删改查。
String connString = ConfigurationManager.ConnectionStrings["astt"].ConnectionString; using (OleDbConnection conn = new OleDbConnection(connString)) { DataSet ds = new DataSet(); OleDbDataAdapter adapter = new OleDbDataAdapter(); //指定DataAdapter的select语句 OleDbCommand selectCmd = new OleDbCommand(); selectCmd.CommandText = "select * from s_userm where rownum <= ?"; selectCmd.CommandType = CommandType.Text; selectCmd.Connection = conn; selectCmd.Parameters.Add("?", OleDbType.Integer).Value = 5; adapter.SelectCommand = selectCmd; //指定DataAdapter的Insert语句 OleDbCommand insertCmd = new OleDbCommand(); insertCmd.CommandText = "insert into s_userm(user_no,user_nm) values(?,?)"; insertCmd.CommandType = CommandType.Text; insertCmd.Connection = conn; insertCmd.Parameters.Add("?", OleDbType.VarChar, 30, "user_no"); insertCmd.Parameters.Add("?", OleDbType.VarChar, 80, "user_nm"); adapter.InsertCommand = insertCmd; //指定DataAdapter的Update语句 OleDbCommand updateCmd = new OleDbCommand(); updateCmd.CommandText = "update s_userm set email = ? where user_no = ?"; updateCmd.CommandType = CommandType.Text; updateCmd.Connection = conn; updateCmd.Parameters.Add("?", OleDbType.VarChar, 50, "email"); OleDbParameter parmUpdPk = updateCmd.Parameters.Add("?", OleDbType.VarChar, 30, "user_no"); parmUpdPk.SourceVersion = DataRowVersion.Original; adapter.UpdateCommand = updateCmd; //指定DataAdapter的Delete语句 OleDbCommand deleteCmd = new OleDbCommand(); deleteCmd.CommandText = "delete from s_userm where user_no = ?"; deleteCmd.CommandType = CommandType.Text; deleteCmd.Connection = conn; OleDbParameter parmDelPk = deleteCmd.Parameters.Add("?", OleDbType.VarChar, 30, "user_no"); parmDelPk.SourceVersion = DataRowVersion.Original; adapter.DeleteCommand = deleteCmd; //MessageBox.Show(adapter.SelectCommand.CommandText, "command"); conn.Open(); using (OleDbTransaction tran = conn.BeginTransaction(IsolationLevel.ReadCommitted)) { adapter.SelectCommand.Transaction = tran; adapter.InsertCommand.Transaction = tran; adapter.UpdateCommand.Transaction = tran; adapter.DeleteCommand.Transaction = tran; try { //select adapter.Fill(ds, "s_userm"); dataGridView1.DataSource = ds.Tables["s_userm"].DefaultView; //insert DataRow updateRow = ds.Tables["s_userm"].NewRow(); updateRow["user_no"] = "TEST2"; updateRow["user_nm"] = "test2"; ds.Tables["s_userm"].Rows.Add(updateRow); adapter.Update(ds, "s_userm"); //MessageBox.Show(Convert.ToString(ds.Tables["s_userm"].Rows[3]["user_no"]), "user"); //update ds.Tables[0].Rows[3]["EMAIL"] = "gymsoft@163.com"; adapter.Update(ds, "s_userm"); //delete ds.Tables["s_userm"].Rows[3].Delete(); adapter.Update(ds, "s_userm"); tran.Commit(); } catch (Exception ex) { try { tran.Rollback(); } catch (Exception exc) { MessageBox.Show(exc.Message, "error"); } MessageBox.Show(ex.Message, "error"); } } conn.Close(); }
相关文章推荐
- C#使用Ado.Net读写数据库
- 使用C#和ADO.NET数据库访问技术,实现CRUD--20180127
- C#使用ADO.net连接数据库
- ADO.NET中使用事务进行数据库读写的办法
- ACCP学习旅程之-----使用C#开发数据库应用程序(第六章 用ADO.NET连接数据库)
- [翻译]Visual C# .NET中使用ADO.NET读写 BLOB 数据
- 如何通过使用 ADO.NET 2005 和 Visual C# 2005 或使用 ADO.NET 和 Visual C# .NET 连接到数据库并运行命令
- 使用ADO.NET和C#以编程方式创建 SQL Server 数据库
- C#学习笔记(六)-使用ADO .NET查询和操作数据库
- ACCP学习旅程之-----使用C#开发数据库应用程序(第七章 用ADO.NET查询和操作数据库)
- C#中通过使用ADO.NET读写BLOB数据
- 如何使用ADO.Net助手生成C#数据库代码
- C#使用ADO.NET访问数据库(一)
- 如何使用 ADO.NET 和 Visual C# .NET 以编程方式创建 SQL Server 数据库
- 如何使用 ADO.NET 和 Visual C# .NET 连接到数据库并运行命令
- C#使用ADO.NET连接数据库简单代码实例
- sqllite (3) - c# .net 使用 dapper 操作 sqllite 数据库
- 使用ADO.NET轻松操纵数据库
- 利用SQLite ADO.NET在C#中使用SQLite
- 使用ADO.NET 和C# 处理BLOB 数据