ADO.NET基础知识汇总
虽然我们都知道ADO.NET是对数据库的操作,要真的说出ADO.NET的具体含义还不是很容易。
ADO.NET是ActiveX Data Objects的缩写,它是一个COM组件库,用于在microsoft技术中访问数据。之所以叫ADO.NET,应该是微软自己打的广告,希望在NET编程环境中优先使用这种数据访问接口。上面这段话基本来自百度百科。简单来说,ADO.NET就是一种数据访问接口,可以让我们在程序中调用相应的类库对数据库(通常为SQL Server,也可以是aess 等其他数据库)进行增删改查等操作。
ADO.NET的几大组成部分
ADO.NET由五大类库组成,分别是
Connection(用于建立与 数据库的连接)
Command(用于执行SQL语句)
DataReader(用于读取数据)
DataAdapter(用于填充把数据填充到DataSet)
DataSet(数据集,用于程序中)
通常,从程序中访问数据库的方法是
创建一个到数据库的连接
打开数据库连接
创建ADO记录集
从记录集中提取需要的数据
关闭记录集
关闭连接
狼蚁网站SEO优化就分别根据这一个过程结合ADO.NET的五大类库进行解释。
要想使用ADO.NET需要在程序中引用System.Data.SqlClient。其中包含了对Sql Server进行操作的数据访问类
SqlConnection连接数据库
SqlCommand数据库命名对象
SqlCommandBuilder生成SQL命令
SqlDataReader数据读取器
SqlDataAdapter数据适配器,用于填充DataSet
SqlParameter为存储过程定义参数
SqlTransaction数据库事务
建立连接
,要想访问数据库,我们需要一个媒介把程序与数据库连接起来。这就是连接字符串,它的基本语法为Data Source(数据源) + Initial Catalog(数据库名称) + User ID(用户名) + Password(密码)。
String connectString = "Data Source = myServerAddress;Initial Catalog = myDataBase;User Id = myUserName; Password = myPassword;";
或者
String connectString = "Server =myServerAddress;Database = myDataBase; User Id = myUsername; Password = myPassword;";
注意对于Sql Server来说,它支持两种身份验证方法,一种是windows身份验证,另一种是Sql Server身份验证。如果要用windows身份验证,就需要在连接字符串中包括Integrated Security属性。该属性默认为False。需要设置为True后才能使用windows身份验证。
除了这几个必须的字段,连接字符串中还有许多可选的属性,在这里我就不一一列举,列出一些相关资料供感兴趣的朋友自行查阅,一个连接字符串可以包含哪些属性()。
接着,有了连接字符串就可以创建连接对象了。
SqlConnection connection = new SqlConnection(connecString);
或者可以使用专门的连接字符串生成器
SqlConnectionStringBuilder connectionStringBuilder = new SqlConnectionStringBuilder()
{
DataSource=”“,
InitialCatalog=”“,
UserID=”“,
Password=””
};
SqlConnection connection = new SqlConnection(connectionStringBuilder.ToString());
然后使用连接对象可以打开或关闭连接。
connection.Open();
connection.Close();
执行命令
打开连接之后就可以操作数据库了,在这里需要用到SqlCommand命令对象。
它具有四个主要属性,这些属性会在初始化的时候赋默认值
CommandText空字符串(”“)
CommandTimeout30
CommandTypeCommandType.Text
ConnectionNull
创建命令对象
SqlCommand mand = connection.CreateCommand();
或
SqlCommand mand = new SqlCommand();
SqlCommand包含了几个重要的属性
CommandText用于获取或设置药对数据源之行的SQL语句、表明或存储过程。
CommandType设置你执行的SQL语句类型,有三个枚举,分别是Text(SQL文本命令),StoredProcedure(存储过程),TableDirect(表名)。
Parameters设置你的T-SQL中需要用到的参数。
几个重要的方法
ExecuteNonQuery返回被SQL语句执行影响的行数(int),主要执行增删改操作。
ExecuteReader执行SQL或存储过程,返回的是SqlDataReader类型,主要用来查询。
ExecuteScalar返回执行结果集中的第一行第一列,如果没有数据,则返回NULL。
CreateParameter创建SqlParameter实例。
举例说明
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data;//必须 using System.Data.SqlClient;//必须 namespace Command { class Program { static void Main(string[] args) { SqlConnectionStringBuilder conStr = new SqlConnectionStringBuilder(); conSt.DataSource=@".\SQLEXPRESS"; conStr.IntegratedSecurity=true; conStr.InitialCatalog="db_Test"; StringBuilder strSQL = new StringBuilder(); for(int i=0;i<=100;i++) { strSQL.Append("insert into tb_Test"); strSQL.Append("values('"); string name = "test"+i.ToString(); strSQL.Append(name); } using(SqlConnection con = new SqlConnection(conStr.ConnectionString)) { con.Open(); SqlCommand cmd = new SqlCommand(strSQL.ToString(),con); int impactedNumber = cmd.ExecuteNonQuery();//返回受影响的行数 object firstData = cmd.ExecuteScalar();//返回执行结果中的第一行第一列,此方法可用于获取插入数据的ID,(int lineNumber =(int)cmd.ExecuteScalar();) } } } }
SQL参数
若想在程序中传递参数给数据库,可以使用SqlParameter。该类有几个重要的属性
ParameterName设置参数名
Value给参数设置值
Size设置参数字节最大长度
SqlDbType参数在SQL中的类别
和几个重要的方法
AddWithVlue
Add
AddRange
举例说明
SqlConnection connection =new SqlConnection("")) { SqlCommand cmd = connection.CreateCommand(); cmd.CommandText=""; cmd.Parameters.Add("@name",SqlDbType.NVarChar).Value = "deng";//方法一 cmd.Parameters.AddWithValue(@"name","deng");//方法二 SqlParameter[] parameters = new SqlParameter[] { new SqlParameter("@name",SqlDbType.NvarChar,100){Value="deng"}, }; cmd.Parameters.AddRange(parameters);//可以放一个参数数组,包含多条参数,在此只举一个例子 }
可以通过cmd.Parameters[i].Value设置和读取数值。
数据读取
利用查询语句得到的数据信息需要通过数据读取器进行操作。
举例
SqlConion con = new SqlConnection("") { con.Open(); SqlCommand cmd = con.CreateCommand(); cmd.CommandText=""; SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection) { While(dr.Read()) { string str = dr.GetSqlString(0).ToString(); } } }
介绍几个常用的方法
GetOrdinal可以获取指定列名的序列号,int name = dr.GetOrdinal(“name”);
GetName与上面的方法对应,可以通过列号返回列名字。
IsDBNull判断当前读取的数据是否为Null。
NextResult当查询为批处理查询时,使用这个方法去获取下一个结果集,返回值为Bool,如果存在多个结果集,则为true;否则为false。
Read读取数据。
常用属性有
HasRow判断是否有数据。
FieldCount获取读取的列数。
IsClosed判断读取的数据流是否关闭。
SqlDataReader是连接相关的,也就是说与数据库的连接一断开就无法读取数据库中的数据,说明查询结果并不是放在程序中,而是放在数据库的服务中。
事务
需要用到SqlTransaction类,需要在指定位置命名存储点,该存储点之后的操作都将会回滚。
例子
SqlConnection con = new SqlConnection(strCon); con.Open(); SqlTransaction transaction = con.BeginTransaction(); SqlCommand cmd = con.CreateCommand(); cmd.CommandText = "" cmd.Transaction = transaction; transaction.Save("transaction point"); transaction.Rollback("transaction point");
数据适配器
SqlDataAdapter类有四个重载构造函数
无参
SqlDataAdapter(SqlCommand)
SqlDataAdapter(String,SqlConnection)
SqlDataAdapter(String, ConnectionString)
填充数据例子
DataSet dataSet = new DataSet(); SqlConnection con = new SqlConnection(""); con.Open(); SqlCommand cmd = con.CreateCommand(); cmd.CommandText="select xxx from tb_xxx"; SqlDataAdapter dataAdapter = new SqlDataAdapter(cmd); dataAdapter.Fill(dataSet);
填充后的数据可以使用SqlCommandBuilder进行增删改查。
例子
SqlConnection con = new SqlConnection(ConnectionString(); con.Open(); SqlDataAdapter da = new SqlDataAdapter("select xxx from tb_xx"); DataSet ds =new DataSet(); da.Fill(ds); SqlCommandBuilder cmdBuilder = new SqlCommandBuilder(da); DataRow row = ds.Tables[0].NewRow(); row[0]="a"; row[1]="b"; ds.Tables[0].Rows.Add(row); da.Update(ds);
SqlCommandBuilder 可以把DataSet增加的数据转化为SQL语句用来更新数据库。然后调用Update方法。
因为现在使用的框架或着库都已经封装了ADO.NET,可能在日常工作中很少会再从头开始编写ADO.NET来连接数据库,在.面试中还是非常常见的,希望可以借此加深一下印象。,本人目前持有的是银蕨签证,可以在新西兰求职9个月,期间如果找到相关专业工作,可直接转2年的工作签证,非常方便移民,该签证每年全球发放300个,虽然还没有working holiday签证为大家所熟知,每年的争抢还是很激烈的。需要了解相关事宜的可以给我留言。本人的第一篇博客,属于整理资料,并非完全原创,如有哪方面不正确,还希望大神可以多多指正。
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程