C#.NET的Winform程序中使用ADO.NET操作SQL Server数据库
1:添加命名空间System.Data.SqlClient中的SQL Server访问类;
2:与SQL Server数据库建立连接,ADO.NET提供Connection对象用于建立与SQL Server数据库的连接
string connectionStr = "server=服务器名;database=数据库名;uid=用户名;pwd=密码"; ///定义连接字符串
SqlConnection connection1 = new SqlConnection (connectionStr); ///实例化Connection对象用于连接数据源
connection1.Open(); ///打开数据库连接
......
connection1.Close(); ///关闭数据库连接
3:与SQL Server数据库建立连接后,使用命令对象SqlCommand类直接对数据库进行操作
(1) 构造命令对象
string connectionStr = "server=服务器名;database=数据库名;uid=用户名;pwd=密码"; ///定义连接字符串
SqlConnection connection1 = new SqlConnection (connectionStr); ///实例化Connection对象用于连接数据源
connection1.Open(); ///打开数据库连接
SqlCommand command1 = new SqlCommand (); ///构造一个名为command1的命令对象
command1.Connection = connection1; ///command1使用的连接对象为connection1
command1.CommandText = "SELECT * FROM A"; ///从A表中选择所有数据 注意:CommandText的属性值(类型为字符串)默认情况下是SQL语句,也可以是个存储过程名
......
connection1.Close(); ///关闭数据库连接
(2) 执行命令
string connectionStr = "server=服务器名;database=数据库名;uid=用户名;pwd=密码"; ///定义连接字符串
SqlConnection connection1 = new SqlConnection (connectionStr); ///实例化Connection对象用于连接数据源
connection1.Open(); ///打开数据库连接
string sqlStr = "INSERT INTO A() VALUES();" //用于向A表插入记录的SQL语句
SqlCommand command1 = new SqlCommand (sqlStr, connection1); ///构造函数指定命令对象所使用的连接对象connection1以及命令文本sqlStr
command1.ExecuteNonQuery(); ///ExecuteNonQuery()方法返回值为一整数,代表操作所影响到的行数 注意:ExecuteNonQuery()方法一般用于执行UPDATE、INSERT、DELETE等非查询语句
......
connection1.Close(); ///关闭数据库连接
4:使用SqlDataAdapter数据适配器类访问数据库 注意:它既可以将数据库中数据传给数据集中的表,又可将数据集中的表传到数据库中。简言之,数据适配器类用于数据源与数据集间交换数据
string connectionStr = "server=服务器名;database=数据库名;uid=用户名;pwd=密码"; ///定义连接字符串
SqlConnection connection1 = new SqlConnection (connectionStr); ///实例化Connection对象用于连接数据源
connection1.Open(); ///打开数据库连接
string sqlStr = "SELECT * FROM A"; ///从A表中选择所有数据的SQL语句
SqlDataAdapter dataAdapter1 = new dataAdapter (sqlStr, connection1); ///构造名为dataAdapter1的数据适配器对象,并指定连接对象connection1以及SELECT语句
DataSet dataSet1 = new DataSet(); ///构造名为dataSet1的数据集对象
dataAdapter1.Fill(dataSet1); ///使用SqlDataAdapter类中的Fill()方法将数据填充到数据集中 注意:SqlDataAdapter类中的Fill()方法和Update()方法可用于将数据填充到单个数据表或数据集中
......
connection1.Close(); ///关闭数据库连接
5:使用DataSet数据集表示数据库中的数据
(1) 填充数据集(将外部数据源数据加载到数据集中)
string connectionStr = "server=服务器名;database=数据库名;uid=用户名;pwd=密码"; ///定义连接字符串
SqlConnection connection1 = new SqlConnection (connectionStr); ///实例化Connection对象用于连接数据源
connection1.Open(); ///打开数据库连接
string sqlStr = "SELECT * FROM A"; ///从A表中选择所有数据的SQL语句
SqlDataAdapter dataAdapter1 = new dataAdapter (sqlStr, connection1); ///构造名为dataAdapter1的数据适配器对象,并指定连接对象connection1以及SELECT语句
DataSet dataSet1 = new DataSet(); ///构造名为dataSet1的数据集对象
dataAdapter1.Fill(dataSet1); ///使用SqlDataAdapter类中的Fill()方法将数据填充到数据集中 注意:SqlDataAdapter类中的Fill()方法和Update()方法可用于将数据填充到单个数据表或数据集中
......
connection1.Close(); ///关闭数据库连接
(2) 更新数据集(通过数据集更新数据源)
string connectionStr = "server=服务器名;database=数据库名;uid=用户名;pwd=密码"; ///定义连接字符串
SqlConnection connection1 = new SqlConnection (connectionStr); ///实例化Connection对象用于连接数据源
connection1.Open(); ///打开数据库连接
string sqlStr = "SELECT * FROM A"; ///从A表中选择所有数据的SQL语句
SqlDataAdapter dataAdapter1 = new dataAdapter (sqlStr, connection1); ///构造名为dataAdapter1的数据适配器对象,并指定连接对象connection1以及SELECT语句
DataSet dataSet1 = new DataSet(); ///构造名为dataSet1的数据集对象
dataAdapter1.Fill(dataSet1); ///使用SqlDataAdapter类中的Fill()方法将数据填充到数据集中 注意:SqlDataAdapter类中的Fill()方法和Update()方法可用于将数据填充到单个数据表或数据集中
DataRow dataRow1 = dataSet.NewRow(); ///调用数据表的NewRow()方法新建一个空记录
dataSet1.Tables[0].Rows.Add(dataRow1); ///修改数据集,增加一个新纪录
dataAdapter1.Update(dataSet1); ///将更改后的数据集更新数据库
......
connection1.Close(); ///关闭数据库连接
6:使用DataReader数据读取器从一个数据源中选择某些数据(功能最弱)
string connectionStr = "server=服务器名;database=数据库名;uid=用户名;pwd=密码"; ///定义连接字符串
SqlConnection connection1 = new SqlConnection (connectionStr); ///实例化Connection对象用于连接数据源
connection1.Open(); ///打开数据库连接
SqlCommand command1 = new SqlCommand (); ///构造一个名为command1的命令对象
command1.Connection = connection1; ///command1使用的连接对象为connection1
command1.CommandText = "SELECT * FROM A"; ///从A表中选择所有数据 注意:CommandText的属性值(类型为字符串)默认情况下是SQL语句,也可以是个存储过程名
SqlDataReader dataReader1 = command1.ExecuteReader(); ///DataReader类没有构造函数,不能实例化,需要通过调用Command对象的command1的ExecuteReader()方法
while (DataReader1.Read()) ///DataReader的Read()方法用于读取数据,每执行一次该语句,DataReader就向前读取一行数据;如果遇到末尾,就返回False,否则为True
{
}
......
connection1.Close(); ///关闭数据库连接