C#数据访问技术介绍
在C#中ADO.NET是数据访问的架构,它是数据库应用程序和数据源之间的沟通桥梁,主要提供一个面向对象的数据库访问架构,用来开发数据库应用程序。ADO.NET的技术主要包括Connection、Command、DataReader、DataSet和DataTable 6个对象。
其中Connection可以分为四种,我就不一一介绍了,那我就介绍我比较常用的SqlConncetion,它是提供SQL.Server.Net 程序的数据连接对象,它需要用到using System.Data.SqlClient的命名空间。
我们在创建数据库连接对象时要知道它的构造函数的参数,也就是数据库连接字符串。
其中数据库连接字符串中又有几个比较重要的参数需要知道,分别如下:
DataBase 或Initial Catalog: 数据库名称;
Data Source或Server: 服务签名或者是Access数据库的文件名。
PassWord 或pwd:Sql数据库的密码;
User ID或 uid: sql的用户名
Integrated Security:是否安全连接。
1、下面通过一个实例来展示结果:
首先我们先创建一个控制台应用程序。然后在Main方法中写入以下代码
static void Main(string[] args)
{
//声明数据库连接字符串
string strconnect = @"Server=DESKTOP-EDDR3KK\SQL; User ID=sa; Pwd=123; DataBase=BookManage";
//创建数据库连接对象
SqlConnection sqlConnection = new SqlConnection(strconnect);
//打开数据库连接对象
sqlConnection.Open();
//判断数据库服务是否成功打开
if (sqlConnection.State == System.Data.ConnectionState.Open)
{
Console.WriteLine("Sql server 数据库成功打开了");
//关闭数据库服务
sqlConnection.Close();
}
if (sqlConnection.State == System.Data.ConnectionState.Closed)
{
Console.WriteLine("Sql server 服务已关闭");
}
Console.Read();
}
这时候如果我们电脑上没有禁用SQL Server 服务的话就能打开SQL 服务了,控制台输出结果如下。
2、我们创建数据可连接的目的是为了操作数据库中的数据,这个时候我们就要用到Command对象了。它可以实现对数据源执行查询、新增、修改、删除等操作。其中Command对象和Connection对象一样也可以分为4种,而我这里是要操作Sql Server服务的数据源,就介绍SqlCommand对象吧,其他的就不去介绍了。在此之前其中SqlCommand中有几个常用到的属性要介绍一下,分别如下:
CommandType:获取或设置Command 对象要执行的命令类型;
CommandText:获取或设置要对数据源执行的SQL 语句、存储过程或者表名
CommandTimeOut:获取或设置对执行命令生成错误之前的等待时间
Conncetion:获取或设置Command对象使的Conncet对象名称;
Parameters:获取Command对象需要使用的参数集合
那我们接着上面的实例继续(接if语句代码),代码如下:
//判断数据库服务是否成功打开
if (sqlConnection.State == System.Data.ConnectionState.Open)
{
Console.WriteLine("Sql server 数据库成功打开了");
SqlCommand command = new SqlCommand(); //创建sqlcommand 对象
command.Connection = sqlConnection; //指定数据库连接对象
command.CommandType = System.Data.CommandType.Text; //要执行的命令类型(文本命令,存储语句)
// command.CommandText = "SELECT * FROM dbo.Book";//要执行的SQL语句
//当然也可以设置传递参数
//int booktype = 1;
//command.CommandText = "SELECT * FROM dbo.Book WHERE bookTypeID = " + booktype + "";
//向书籍类型表中添加一行数据,这里我比较懒直接写死变量值新增
string strBookTypeName = "玄幻修仙"; //书籍类型名称
string strbookTypeDesc = "XH05";//书籍类型描述
//定义要执行的添加数据的SQL语句
command.CommandText = "INSERT INTO dbo.BookType(bookTypeName, bookTypeDesc) VALUES('" + strBookTypeName + "', '" + strbookTypeDesc + "')";
//判断ExecuteNonQuery方法返回值是否大于0,大于0表示新增成功
if (Convert.ToInt32(command.ExecuteNonQuery()) > 0)
{
Console.WriteLine("书籍类型新增成功!");
}
else
{
Console.WriteLine("新增失败!");
}
//关闭数据库服务
sqlConnection.Close();
}
输出结果图片如下:
上面介绍的是通过CommandText属性设置用于新增数据到数据库的存储语句,至于修改和删除操作也一样,查询操作需要用到DataReader对象来接收查询返回的数据集,在下面对讲到,当然SqlCommand不仅仅能通过Sql语句对数据库进行操作,而且能通过存储过程或者表名操作数据库信息,其他操作就不介绍了。
3、好,下面介绍的就是DataReader 数据读取对象,它是一个简单的数据集,主要从数据源中读取只读的数据集,常用来检索大量数据,**其中DataReader对象又可以分为4种,分别是SqlDataReader,OleDataReader,OdbcDataReader和OracleDataReader。 因为我用的是SQL Server 数据库服务,所以只介绍SqlDataReader 。顺便介绍一下它一些常用的属性以及方法,具体如下。
常用属性:
HasRows :判断数据库是否有数据
FieldCount:获取当前行的列数。
RecordAffected:获取执行SQL语句所更改、添加或者删除的行数
常用方法:
Read :使用DataReader对象前进到下一条记录
Close:关闭DataReader对象
Get:用来取数据集当前行的某一列数据。
下面通过一个实例来获取数据库的数据并进行分列显示到控制台中,通过SQL语句查询所有书籍类型,代码如下:
static void Main(string[] args)
{
//声明数据库连接字符串
string strconnect = @"Server=DESKTOP-EDDR3KK\SQL; User ID=sa; Pwd=123; DataBase=BookManage";
//创建数据库连接对象
SqlConnection sqlConnection = new SqlConnection(strconnect);
//打开数据库连接对象
sqlConnection.Open();
//判断数据库服务是否成功打开
if (sqlConnection.State == System.Data.ConnectionState.Open)
{
Console.WriteLine("Sql server 数据库成功打开了");
SqlCommand command = new SqlCommand(); //创建sqlcommand 对象
command.Connection = sqlConnection; //指定数据库连接对象
command.CommandType = System.Data.CommandType.Text; //要执行的命令类型(文本命令,存储语句)
//定义SQL语句查询书籍类型信息
command.CommandText = "SELECT * FROM dbo.BookType";
//使用ExecuteReader方法返回值创建SqlDataReader对象
SqlDataReader reader=command.ExecuteReader();
try
{
//判断返回的DataReader对象是否有数据
if (reader.HasRows)
{
Console.WriteLine("书籍类型ID 书籍类型名称 书籍类型描述");
while (reader.Read())
{
//通过字段名获取当前行的某列的值
Console.WriteLine(reader["bookTypeID"].ToString() + " " + reader["bookTypeName"].ToString() + " " + reader["bookTypeDesc"]);
}
}
}
catch (SqlException ex)
{
Console.WriteLine(ex);
}
//关闭数据库服务
sqlConnection.Close();
}
Console.Read();
}
控制台输出结果如下:
好了这就是SqlDataReader查询数据的操作。至于DataSet和DataAdapter的操作我还没去了解,所以不能介绍了。