ADO.NET连接数据库方法
到今天为止,已经和数据库打过无数交道了,但直到现在才明白数据库是如何就和客户端建立了连接,怎么就可以把数据库的数据传递到客服端或客户端数据是如何就把元数据存到了数据库中
【数据库与客户端的连接】
其实用到了ADO.NET,ADO.NET是.NET平台专门用以存取后端数据库与进行数据操作的一组类。它提供两个核心组件:DataSet和.NET数据提供程序,.NET数据提供程序包括Connection.Command.DataAdapter对象在内的组件
【数据库的连接】
对数据库进行操作,首先要连接数据库,用SqlConnection类创建连接对象,与数据库建立连接之后,就是对数据库的操作,此时用SqlCommand创建command对象,此时才代表可以对数据库进行操作了,操作之后要把操作的结构返回客户端,用到DataAdapter,DataAdapter相当于DataAdapter与DataSet之间的桥梁,通过它可以获取和保存数据,然后把数据送到客户端需要载体,用到DataSet。此时对数据库的整个操作已完成
实例讲解:小偷通过路线(Sqlconnection)找到了目标A家,打开A家的门(SqlCommand),进行检索要偷的东西,然后把拿走(DataReader)要偷的东西(DataReader),通过汽车(DataAdapter)把东西运到了自己的家里(DataSet)。这几个相当于小偷偷盗的一整套方案,缺一不可,缺一个步骤,也拿不走物品。
【.Net数据提供程序】
.Net数据提供程序又分为:
SQL Server.NET数据提供程序 只适用于SQL Server数据库 OLE DB.NET数据提供程序 使用于所有的数据库
【SQLConnection类】
常用方法:
Open:打开数据库连接
Close:关闭数据库连接
常用属性:
ConnectionString:设置打开SQL Server数据库的字符串
State:判断数据库的连接状态:Broken、Closed、Connecting、Fetching、open
DataSource:要连接的SQL Server实例的名称
DataBase:要进行操作的数据库名称
【Command对象】
重用属性:
Connection:连接数据库,相当于与数据库有联系了,只对将对哪个数据库进行操作了
CommandText:SQL语句
CommandType:指定对数据库的操作类型或请求
CommandTimeOut:确定Command对象的Execute方法运行的最长等待时间,缺省值为30秒。
State:设置Command对象的状态
常用方法:
Execute:有两种,分别使用于不同的情况
ExecuteNonQuery
增删改操作
ExecuteReader
查询操作
【DataAdapter对象】
DataAdapter相当于DataSet和数据源之间的桥梁,应用程序通过DataAdapter对象从数据库中读取数据到DataSet中
常用属性:
SelectCommand、InsertCommand、DeleteCommadn、UpdateCommand
重用方法:
Fill:执行SelectCommand,用数据源的数据填充DataSet对象
Update:对DataSet对象中每个插入行、更新行或删除行分别调用InsertCommand.UpdateCommand.DeleteCommand,将DataSet中更改的内容更新到初始的数据源中
【DataReader】
其实DataReader是一个读取数据库的指针,从数据库中表的上面往下一行一行的对
常用属性“
FieldCount:读取的一行数据中的字段数
常用方法:
read():让记录指针指向本结果集中的下一条记录,返回值为bool
GetValue(该行对应列的索引值int):因为不知道对应列的数据类型,所以返回类型是object类型,需要强制转换,只有开始read()读后,才能进行此方法,先读后取
获得指定字段:此方法必需提前直到要获取字段的类型,GetString(索引值)、GetInt32(索引值)等
【DataSet】
DataSet相当于内存中暂存的一个数据库,不仅包括多张表,还包括数据表之间的约束
包括多个子类,其中最常见的有一下几个:
DataRow:数据表,用来存储数据,一个数据集可包含多张表
DataRow:数据行,数据表中的一行记录
DataColumn:数据列,数据表中的一列记录
【数据库基本操作】
其实对数据库的操作大致可以分为两类,一类是:增删改;另一类是:查
1.查
建立数据库连接对象,且建立command对象
SqlConnection con = new SqlConnection("server=.;database=Vote;uid=sa;pwd=123456");//建立数据库连接对象 con.Open();//打开连接 SqlCommand cmd = new SqlCommand("select * from voteMaster where voteSum>aaa@qq.com", con);//建立command对象,代表可以对数据库操作了 SqlParameter para = new SqlParameter("@voteSum", SqlDbType.Int); para.Value = 1; cmd.Parameters.Add(para);//添加参数
a>如果想使用适配器的selectCommand进行查询,代码如下:
SqlDataAdapter sda = new SqlDataAdapter();//声明适配器对象 sda.SelectCommand = cmd; DataSet ds = new DataSet(); sda.Fill(ds, "vote"); DataTable dt = ds.Tables["vote"]; DataRow dr = dt.Rows[0];//取出查询结果中的第一行 Response.Write(dr["voteTitle"].ToString());//页面显示第一行对应列的值
b>如果想获得查询结果第一行第一列的值,代码如下:
Response.Write(cmd.ExecuteScalar());
c>使用DataReader对象,一行一行的读取查询结果,并获得相应列的指
SqlDataReader sdr=null; sdr = cmd.ExecuteReader(); while (sdr.Read()) { Response.Write(Convert.ToString(sdr.GetValue(1))); }
2.增删改
使用ExecuteNonQuery()执行增删改,返回受影响行数
cmd.ExecuteNonQuery();
【总结】
对数据库的操作其实就关键的几条语句,弄清他们的作用,和练习,写起来就容易多了
上一篇: spring boot 连接数据库
下一篇: Spring Boot 连接数据库