《CSharp数据库编程》由会员分享,可在线阅读,更多相关《CSharp数据库编程(58页珍藏版)》请在金锄头文库上搜索。
1、C#数据库编程 ,11.1 数据库编程基础,11.1.1 ADO.NET简介 11.1.2 第一个简单例子 11.1.3 访问数据库的一般步骤,11.1.1 ADO.NET简介,ADO(Active Data Objects)是Microsoft开发的面向对象的数据访问库,ADO.NET是ADO的后续技术,提供对SQL SEVER等数据源的一致访问。数据使用者可以通过ADO.NET来连接到这些数据源(SQL SERVERACCESSOLE DB等),并检索、操作和更新数据。,ADO.NET DataSet是ADO.NET结构的核心组建, DataSet中包括一个或多个DataTable对象的集
2、合,这些对象由数据行和数据列以及主键、外键、约束和有关DataTable对象中数据的关系信息组成。ADO.NET的另外一个核心元素是.NET Framawork数据提供程序,能够实现数据操作和对数据的快速访问。其中,Connection对象提供与数据源的连接;Command对象使你能够访问用于返回数据、修改数据、运行存储过程以及发送或检索参数信息的数据库命令;DataReader对象从数据源中提供高性能的数据流;DataAdapter对象提供连接DataSet对象和数据源的桥梁。,目前,.NET Framawork附带了两个数据提供程序:SQL Server 和OLE DB数据提供程序。 OL
3、E DB数据提供程序位于System.Data.OleDb空间, SQL Server 数据提供程序位于System.Data.SqlClient命名空间。以下是每个数据提供程序所包含的主要类:,11.1.2 第一个简单例子,现在编写一个名为GetStudent的访问SQL SERVER数据库的控制台应用程序,对学生信息表中的信息进行读取(假设学生信息表已经建立)。,using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient;,namespace GetStuden
4、t class Program static void Main( ) string connStr=“server=(local); Initial Catalog=students;user Id=sa;password=1234”;SqlConnection conn=new SqlConnection(connStr);conn.Open( );SqlCommand cmd=conn.CreateCommand( );cmd.CommandText=“Select ID,sName from student”;SqlDataReader reader=cmd.ExecuteReader
5、( );,string output; while(reader.Read( ) output=string .Format(“学生 0t的学号是1”,reader.GetString(1),reader.GetString(0);Console.Writeline(output); reader.Close( );conn.Close( ); ,实例代码讲解,(1)导入数据访问的名称空间,表示在该程序中将使用SQL Server 数据提供程序。 using System; using System.Collections.Generic; using System.Data; using S
6、ystem.Data.SqlClient;,(2)在Main主方法中,首先定义了一个字符串类型的connStr变量,用来存放连接SQL SERVER的数据库连接字符串。接着新建了一个SqlConnection对象,用于连接数据库。 string connStr=“server=(local); Initial Catalog=students;user Id=sa;password=1234”; SqlConnection conn=new SqlConnection(connStr); (3)调用conn对象的Open方法打开数据库连接。 conn.Open( );,(4) 新建SqlCom
7、mand对象,该对象用于向数据库发出命令。通过调用数据库连接对象conn的CreateCommand方法来建立SqlCommand对象。 SqlCommand cmd=conn.CreateCommand( ); (5)有了命令对象cmd后,指定该命令对象的属性CommandText。 cmd.CommandText=“Select ID,sName from student”; (6)命令对象cmd设置完毕,可以向数据库发出命令,执行在CommandText中定义的操作。cmd对象的执行结果保存在SqlDataReader对象reader中。 SqlDataReader reader=cmd
8、.ExecuteReader( );,(7) 在reader中已经保存了从数据库读取的信息,现在的任务是输出它们。从数据读取器中获取数据一般用while循环,Read()方法一直返回真值,直到reader的指针指向最后一条记录的后面。 while(reader.Read( ) output=string .Format(“学生 0t的学号是1”,reader.GetString(1),reader.GetString(0);Console.Writeline(output); (8) 数据读取以后,应该关闭数据读取器和数据库连接对象。 reader.Close( );conn.Close( )
9、;,11.1.3 访问数据库的一般步骤,从前面例子的分析中,得出通过ADO.NET访问数据库的一般步骤如下: (1)建立数据库连接对象(Connection对象); (2)打开数据库连接(Connection对象的Open方法); (3)建立数据库命令对象,指定命令对象所使用的连接对象(Command); (4)指定命令对象的命令属性(CommandText属性); (5)执行命令(Command的方法,如ExecuteReader); (6)操作返回结果(对SqlReaderData对象进行读取); (7)关闭数据库连接。,11.2.4 数据连接,在数据访问中必须建立到数据库的物理连接。每个
10、数据提供程序都包含自己特有的Connection对象。当使用OLE DB数据提供程序时,要使用System.Data.OleDb空间的OleDbConnection对象, 使用SQL Server 数据提供程序时,要使用位于System.Data.SqlClient命名空间的SqlConnection对象。 在程序开始导入名称空间System.Data.SqlClient和System.Data.OleDb。,11.2.4.1 连接SQL SERVER数据源,1、SqlConnection类 SqlConnection类有两个构造函数,一个不带参数,一个接受连接字符串。可以使用以下两种方法进行
11、实例化连接。 string connStr=“server=(local); Initial Catalog=students;user Id=sa;password=1234”;SqlConnection conn=new SqlConnection(connStr);conn.Open( ); 或者 SqlConnection conn=new SqlConnection(“server=(local); Initial Catalog=students;user Id=sa;password=1234”;);conn.Open( );,注意:只有当一个连接关闭后才能把两外一个不同的连接字
12、符串赋值给Connection对象。 如果不知道该对象是打开的还是关闭的,可以检查对性的State属性,它的值可以是Open,也可以是Closed。,2、连接字符串ConnectionString 连接字符串包含由一些“属性名=值”对组成的集合,每个“属性名=值”对都由分号隔开。 string connStr=“server=(local); Initial Catalog=students;user Id=sa;password=1234”; 其中,server为服务器地址,值local表示使用本地机器。server关键字也可以用Data Source来代替,即字符串可以写成 string
13、connStr=“Data Source=(local); Initial Catalog=students;user Id=sa;password=1234”;,Initial Catalog指明了连接使用的数据库,user ID和password则分别指明了访问数据库时使用的用户名和密码。如果在安装数据库软件时选择的身份验证方式为windows身份验证模式,则应使用如下连接字符串: string connStr=“Data Source=(local); Initial Catalog=students; Integrated Security=SSPI”; Integrated Secu
14、rity=SSPI表示连接时使用的是windows身份验证模式。,3、SqlConnection的方法 SqlConnection由自己的方法,如前面使用过的Open( )和Closed( )方法。 其他方法还有: CreateCommand 创建并返回一个与SqlConnection关联的SqlCommand对象。 ChangeDatabase 为打开的SqlConnection更改当前数据库。注意:数据库连接必须小心,应该在最晚的时候建立连接,在最早的时候关闭连接,以释放占用的内存和网络带宽资源。,4、连接SQL SERVER的数据访问实例 (1)启动visual studio .net,
15、新建一个windows 应用程序。 (2)从工具栏中拖动一个Button控件到页面中,将ID设为btnconnect,Text属性为“点击连接数据库”。 (3)在Form1.cs文件中添加名称空间 using System.Data.SqlClient; (4)双击btnConnect控件,在Click事件相关处理程序btnconnect_click中输入以下代码:,try SqlConnection conn=new SqlConnection( ); conn.ConnectionString=“Data Source=(local);user id=sa;password=1234; i
16、nitial Catalog=student;”; conn.Open( ); if(conn.State=ConnectionState.Open)MessageBox.Show(“连接已经打开”); conn.Close( ); if(conn.State=ConnectionState.Closed)MessageBox.Show(“连接已经关闭”); catch(Exception e) MessageBox.Show(“连接失败,原因可能是“+e.Message); ,5、按ctrl+f5运行项目,单击表单中的”点击连接数据库“按钮,如果数据库连接成功,则将依次弹出两个对话框。 6、
17、如果连接不成功,则会得到提示错误信息的页面。,11.2.4.2 连接OLE DB数据源,1、说明 目前在网络流行的小型数据库access,就应该使用OLE DB .NET 数据提供程序来访问数据,该程序在System.Data.OleDb空间中定义。 使用OLE DB .NET 数据提供程序与使用SQL SERVER.NET数据提供程序的方式十分类似,需要注意的是连接字符串有所不同,连接到access数据库的字符串格式如下:Provider=Microsoft.Jet.OLEDB.4.0;Data Source=mydb.mdb;user id=;password=; 前面两项为必须项,如果数据库没有密码,后面两者都可以省略,在实际项目中,Data Source还必须转化为绝对路径。,