ADO.NET的学习笔记(一)--数据库连接及常用的数据库访问方式

  整理了一些在以前的学习中关于ADO.NET在C#中的应用的一些知识点,一是为了复习,二是能够和大家一起分享。
   应用程序调用数据库数据的层次关系:
  Program -> ADO.Net -> Data Provider -> Database
   典型的Access数据库连接字符串
  string.Format("Provider = {0};Data Source = {1}{2}",
  "Microsoft.Jet.OLEDB.4.0",
  System.AppDomain.CurrentDomain.BaseDirectory,
  "数据库名.mdb");
   典型的Sql Server数据库连接字符串
  string.Format("Server={0};Database={1};{2}",
  "localhost",
  "数据库名",
  "Integrated Security=SSPI"); //第三个参数为Sql Server的验证模式,IntegratedSecurity=SSPI为整合Windows验证,也可以使用"的形式
   几种数据库的访问方式:
   ExecuteReader() 只能一行一行向前读,并且连接一直保持着,除非使用dataReader.Close()关闭它
   示例:典型的生成一个OleDbDataReader的过程:
  //1、定义连接字符串
  string connString = string.Format("Provider = {0};Data Source = {1}{2}",
  "Microsoft.Jet.OLEDB.4.0",
  System.AppDomain.CurrentDomain.BaseDirectory,
  "数据库名.mdb");
  //2、建立OleDbConnection数据库连接对象,并将此连接打开
  OleDbConnection myConn = null;
  myConn = System.Data.OleDb.OleDbConnection(connString);
  myConn.Open();
  //3、建立一个OleDbCommand对象
  string sqlString = "Select ... From ... ...";
  OleDbCommand myCmd = new System.Data.OleDb.OleDbCommand(sqlString,myConn);
  //4、建立一个OleDbDataReader对象,通过myCmd的ExecuteReader()方法。
  OleDbDataReader myReader = null;
  myReader = myCmd.ExecuteReader();
  //5、遍历myReader
  while (myReader.Read()) // 逐个读行数据...
  {
  //
  //读取myReader中的数据
  //
  }
   DataSet 面向非连接的,把数据库内容全部Copy到DataSet里面,并且
   好处:
  关闭对数据库的连接,可以方便地工作
  减轻服务器的负担
  一个DataSet中可以存很多很多的表
   坏处:
  容易产生并发冲突
   示例:
  string sql;
  sql = "Select * From tableName";
  //1、建立Command
  System.Data.SqlClient.SqlCommand myCmd = new System.Data.SqlClient.SqlCommand(sql, myConn);
  //2、建立适配器
  System.Data.SqlClient.SqlDataAdapter myDA = new System.Data.SqlClient.SqlDataAdapter(myCmd);
  //3、建立DataSet
  System.Data.DataSet myDataSet;
  myDataSet = new System.Data.Dataset();
  myConn.Open();
  myDA.Fill(myDataSet);//DataAdapter在这里起到了桥梁的作用,填充之后,就可以关闭数据库连接了
  myConn.Close();
  //4、提出myDataSet中相关表的数据
  foreach(System.Data.Row row in myDataSet.Tables["tableName"].Rows)
  {
  ...//逐行读出数据表中数据
  ...//使用row["ColumnName"].ToString()来读取该行中某列的数据
  }
   ExecuteScalar() 面向连接的,读取数据库中一个值,例如返回数据表中有多少记录,只使用Count读出,高效。
   示例:
  string = sql;
  sql = string.Format("Select selectedColumn From myTable Where , ID);
  System.Data.SqlClient.SqlCommand dbCmd;
  dbCmd = new System.Data.SqlClient.SqlCommand(sql,myConn)
  string testStr;
  testStr = System.Convert.ToString(dbCmd.ExecuteScalar());
   ExecuteNonQuery() 面向连接的,可写的。
   示例:
  string sql;
  int rows;
  sql = string.Format("Delete From tableName Where ,ID);
  System.Data.SqlClient.SqlCommand myCmd = new System.Data.SqlClient.SqlCommand(sql, myConn);
  myConn.Open();
  rows = myCmd.ExecuteNonQuery();
  if (rows != 1) throw new System.ApplicationException("删除失败?!");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值