引言
微软数据库是针对中小型企业的关系型数据库,操作简单易上手。首先介绍下C#.NET的数据库,以 ActiveX 数据对象(ADO)为基础 以 XML(扩展标记语言)为格式传送和接收数据:
C#.NET应用程序 <----->ADO.NET<----->数据库
程序中使用System.Data 命名空间。
一. ADO.NET的框架:
NET Framework数据提供程序是专门为数据处理以及快速地只进、只读访问数据而设计的组件。使用它,我们可以连接数据库、执行命令和检索数据,直接对数据库进行操作。
DataSet(数据集)是专门为独立于任何数据源的数据访问而设计。使用它,我们可以不必直接和数据库打交道,可以大批量地操作数据,也可以将数据绑定在控件上。
.NET通过以下的对象来进行数据库的操作:
(1)Connection 建立与数据源的连接
(2)Command 对数据源执行操作命令
(3)DataReader 从数据源中读取只进且只读的数据流
(4)DataAdapter 用数据源填充DataSet并解析更新
1.Connection
Connection对象的主要属性和方法
属 性 说 明
ConnectionString 用于连接数据库的连接字符串
方 法 说 明
Open() 使用ConnectionString属性所指定的设置打开数据库连接
Close() 关闭与数据库的连接
(1) 定义连接字符串(可以直接在第(2)步中编写)
不同的数据库连接字符串格式不同,SQL Server数据库的连接字符串格式一般为:
Data Source=服务器名;Initial Catalog=数据库名; User ID=用户名;Pwd=密码
例如,要连接本机的pubs数据库,连接字符串写成:
string connString = "Data Source=.;Initial Catalog=pubs;User ID=sa";
经验:
服务器如果是本机,可以输入“.”来代替计算机名称或者IP地址。密码如果为空,可以省略Pwd一项。
(2). 创建 Connection 对象
调用定义好的连接字符串创建Connection 对象。
SqlConnection connection = new SqlConnection(connString);
(3). 打开与数据库的连接
调用Connection 对象的Open()方法打开数据库连接。
connection.Open( );
(4) 关闭数据库的连接
Connection.Close();
string connString = "Data Source=.;Initial Catalog=db_MrCy;UserID=sa;pwd=sa";
SqlConnection connection = new SqlConnection(connString);
// 打开数据库连接
connection.Open();
MessageBox.Show("打开数据库连接成功");
// 关闭数据库连接
connection.Close();
MessageBox.Show("关闭数据库连接成功");
2.使用Command对象
打开数据库连接后,怎样操作数据呢?这就需要Command对象(命令对象),Command对象可以对数据库执行增删改查的命令。
Command对象的主要属性和方法
属 性 说 明
Connection Command对象使用的数据库连接
CommandText 执行的SQL语句
方 法 说 明
ExecuteNonQuery() 执行不返回行的语句,如update、delete等
ExecuteReader() 执行程序命令,返回DataReader对象
ExecuteScalar() 返回单个值,如执行count(*)等
ExecuteScalar()方法只返回查询结果的第一行第一列的值,所以当我们的查询结果只有一个值时,通常使用这个方法。方法的返回值要进行显式类型转换。
要使用Command对象,必须有一个已经连接的Connection对象,使用Command对象的步骤包括:
(1)创建数据库连接
按照上节介绍的步骤创建一个Connection对象。
(2)定义执行的SQL语句
将对数据库执行的SQL语句赋给一个字符串。
(3)创建Command对象
使用已有的Connection对象和SQL语句串创建一个Command对象。
(4)执行SQL语句
使用Command对象的某个方法执行命令。
connection.Open(); // 打开数据库连接
SqlCommand command = new SqlCommand(sql, connection); // 创建Command 对象
num = (int)command.ExecuteScalar(); // 执行SQL 查询
message = string.Format("tb_Waiter表中共有{0}条员工信息!",num);
MessageBox.Show(message,"查询结果",MessageBoxButtons.OK,MessageBoxIcon.Information);
3.DataReader对象查询、增删改数据
使用DataReader对象可以从数据库中检索只读数据,它每次从查询结果中读取一行到内存中,所以使用DataReader对数据库进行操作非常快。DataReader属于.NET Framework数据提供程序。
DataReader对象的主要属性和方法
属 性 说 明
HasRows 是否返回了结果
FieldCount 当前行中的列数
方 法 说 明
Read() 前进到下一行记录
Close() 关闭 DataReader 对象
使用DataReader的步骤:
1. 创建Command对象
sql是查询、增改删语句。
SqlCommand command = new SqlCommand(sql, connection); // 创建Command 对象
2. 调用Command对象的ExecuteReader()方法创建DataReader对象:
SqlDataReader dataReader = command.ExecuteReader();
3. 使用 DataReader 的 Read() 方法逐行读取数据这个方法返回一个布尔值,如果能读到一行记录,就返回True,否则返回False。
dataReader.Read();
4. 读取某列的数据,(type)dataReader[ 列名或序列号]像读取数组一样,用方括号来读取某列的值,如(string)dataReader["WaiterName"]; 方括号可以像数组一样使用列的索引,从0开始,也可以使用列名,取出的值要进行类型转换。
5. 关闭 DataReader 对象
使用dataReader对象读取数据的时候会占用数据库连接,必须用它的Close()方法来关闭dataReader对象,才能用数据库连接进行其它操作。
dataReader.Close();
//创建连接对象
SqlConnection conn = *****;
string sql = "SELECT waitertype FROM tb_Waitertype"; // 查询员工类别的sql语句,也可以是增改删语句。
// 设置command命令执行的语句
SqlCommand command = new SqlCommand(sql, conn);
try
{
conn.Open(); // 打开数据库连接
SqlDataReader dataReader = command.ExecuteReader(); // 执行查询
string waitertype = ""; // 类别名称
// 循环读出所有的类别名,并添加到类别列表框中
while (dataReader.Read())
{
waitertype = (string)dataReader["waiterType"];
cboType.Items.Add(waitertype);
}
dataReader.Close();
}
catch (Exception ex)
{
MessageBox.Show("操作数据库出错");
Console.WriteLine(ex.Message);
}
finally
{
conn.Close();
}
4.使用Listview控件绑定数据
列表视图控件的主要属性、事件和方法
属性 说明
Columns “详细信息”视图中显示的列
FullRowSelect 当选中一项时,它的子项是否同该项一起突出显示
Items ListView中所有项的集合
MultiSelect 是否允许选择多项
SelectedItems 选中的项的集合
View 指定以哪种视图显示
事件 说明
MouseDoubleClick 鼠标双击事件
方法 说明
Clear() 清除ListView中的所有项列
实际应用如下:
listview1.Items.Clear();//清空当前列表框
SqlConnection conn = **********;
conn.Open();///连接数据库
SqlCommand cmd = new SqlCommand("select * from tb_Room", conn);//数据库命令对象
sdr = cmd.ExecuteReader();//执行数据库命令,返回DataReader对象
while (sdr.Read())///将DataReader对象依次读取出来
{
string zt = sdr["RoomZT"].ToString().Trim();
AddItems(zt);//添加到列表框中的自定义函数
}
conn.Close();//关闭数据库连接