也叫中间层,是网站的精髓,掌控应用程序的业务逻辑。
(文中例子只为说明问题,可以有错误地方,不可照抄)
1.连接数据库
1)打开sql 连接
2)执行数据库操作,返回数据 (黄金法制:尽可能晚打开数据库,尽快关闭)
3)关闭数据库连接
建立连接的类是:SqlConnection,指定三个重要的参量:sql实例名、访问数据库授权信息、数据库名
例子:
SqlConnection connection =new sqlconnection
connection.connectionstring="Sever=;user id=psd=database=;"
connection.Open();
2.提交命令于执行存储过程
1)创建SqlCommand对象:
主要作用是:可以讲于数据库交互的信息保存起来,他存放的是要执行的sql语句和存储过程的名字;当然也包括存储过程的参数。
SqlCommand command = new SqlCommand();
comand.Connection = connection;
command.CommandText = "Gegdd";
command.CommandType = CommandType.StoreProcedure;
2)执行命令和关闭连接
这是值得自豪的时候,在创建完连接和sqlcommand对象后,就可以准备执行命令了。执行完应该马上关闭数据库连接。
这里将要介绍多种执行方法(Exccute):ExcuteNonQuery、ExcuteScalar和ExcuteReader
ExcuteNonQuery用于执行不返回任何记录的sql语句和存储过程,如更新、插入、删除操作时,常用此法。他可以返回一个整数值,用来说明影响的行数。
connectionOpen();
command.ExcuteNonQuety();
command.Close();
ExcuteScalar也是返回一个单值,但是他不是返回一个影响的行数,而是从数据库里面读取的数据,如果用select查询得到多行数据,那么返回第一行第一列的数据
ExecuteReader返回多条记录。他返回一个SqlDataReader对象,一个SqlDataReader对象是以顺序向前且只读的形式逐个读取并返回结果的。他的优点它是取数最快的对象,不利的一面是需要打开连接,在连接关闭前无法使用同一个连接执行其他任何数据库操作。在我们的解决方案种,通过SqldataReader取回所有记录,存入DataTable中(他可以存储数据而不打开连接),这样可以马上关闭数据库。
-----------------------------------------------
DataTable的分类是DataSet,他是个非常强大的对象,像一个内存中的数据库,他能存储数据表、他们的数据类型、表间关系等。正是因为他的负责行,dataset会消耗很多内存,所有避免使用他。
------------------------------------------------
经典代码:
conn.open();
sqldataReader reader=comm.ExecuteReader(); // 和上文所说的,ExcuteReader返回一个SqlDataReader
DataTable table=new Datatable();
table.Load(reader);
reader.Close();
conn.Closer();