C#操作SqlServer数据库的常用对象,及其方法
首先放出所常用的对象:
System.Data.SqlClient.SqlConnection
System.Data.SqlClient.SqlCommand
System.Data.SqlClient.SqlDataAdapter
SqlConnection对象用于连接SqlServer数据库,SqlCommand对象用于执行sql语句,至于SqlDataAdapter对象,后面再说。
一、SqlConnection对象
先看代码:
string strConn = "server='(local)';database='mydatabase';uid='root';pwd='123456'";//编写需要连接的数据库信息,一般这个会在Web.Config文件配置
SqlConnection conn = new SqlConnection(strConn); //创建连接对象
conn.Open();//打开连接
很容易理解,会将上面代码写成:
string strConn = "server='(local)';database='mydatabase';uid='root';pwd='123456'";//编写需要连接的数据库信息,一般这个会在Web.Config文件配置
using(SqlConnection conn = new SqlConnection(strConn)){ //创建连接对象
try{
conn.Open();//打开连接
}catch(Exception e){
//anything
}finally{
conn.Close();
}
}
SqlConnection对象就是只起到连接数据库作用。
二、SqlCommand对象
SqlCommand对象用于数据的增删改查操作,所以下面介绍SqlCommand类下面的一些方法:
1、ExecuteNonQuery();
ExecuteNonQuery(),看方法名字有Non,可以联想到其可能没有返回值。其实它的返回值类型为int型。当select操作时,返回-1;当执行增加,删除,修改数据时,返回影响的行数。(PS,此方法意义在于执行数据的增、删、改操作)
2、ExecuteReader();
ExecuteReader(),该方法用于数据的查询,执行后的返回值类型是SqlDataReader,可以通过SqlDataReader对象下面的Read()方法来对数据集进行遍历,有两种提取数据的手段:SqlDataReader对象["列名"].ToString()和SqlDataReader对象[索引].ToString()(这里的索引值从0开始)
代码例子:
string strConn = "server='(local)';database='mydatabase';uid='root';pwd='123456'";//编写需要连接的数据库信息,一般这个会在Web.Config文件配置
using(SqlConnection conn = new SqlConnection(strConn)){ //创建连接对象
try{
conn.Open();//打开连接
string strSql = "select * from student_tb";//编写sql语句
SqlCommand sc = new SqlCommand(strSql, conn);//创建SqlCommand对象
SqlDataReader reader = cmd.ExecuteReader(); //执行sql语句
while(reader.Read()){//遍历查询到的数据集
int id = int.Parse(reader[0].ToString());//通过索引得到该列的值
}
}catch(Exception e){
//anything
}finally{
conn.Close();
}
}
3、ExecuteScaler();
它的返回值类型是Object类型。也是用于查询,只有确定查询之后的结果只有一个值得情况下,可以使用此方法。
string strConn = "server='(local)';database='mydatabase';uid='root';pwd='123456'";//编写需要连接的数据库信息,一般这个会在Web.Config文件配置
using(SqlConnection conn = new SqlConnection(strConn)){ //创建连接对象
try{
conn.Open();//打开连接
string strSql = "select stu_name from student_tb";//编写sql语句
SqlCommand sc = new SqlCommand(strSql, conn);//创建SqlCommand对象
string stuId = (string)cmd.ExecuteScaler(); //执行sql语句
}catch(Exception e){
//anything
}finally{
conn.Close();
}
}
三、SqlDataAdapter对象
上面的查询方法在处理少量返回数据时非常方便,但遇到需要处理大量返回数据集时,那么需要用到SqlDataAdapter对象。
SqlDataAdapter类提供多个构造方法:
1、SqlDataAdapter(strSql,strConn) ,strSql为字符串形式sql语句,strConn跟上面代码中的strConn变量一样
2、SqlDataAdapter(strSql, conn) ,strSql为字符串形式sql语句,conn为SqlConnection对象
3、SqlDataAdapter(cmd) , cmd为SqlCommand对象
我们常常使用SqlDataAdapter来填充一个数据表,其中可以有两种操作,可以填充DataSet对象,也可以填充DataTable对象。
string strConn = "server='(local)';database='mydatabase';uid='root';pwd='123456'";//编写需要连接的数据库信息,一般这个会在Web.Config文件配置
using(SqlConnection conn = new SqlConnection(strConn)){ //创建连接对象
try{
conn.Open();//打开连接
string strSql = "select * from student_tb";//编写sql语句
SqlCommand sc = new SqlCommand(strSql, conn);//创建SqlCommand对象
SqlDataAdapter sda = new SqlDataAdapter(sc);
DataSet ds = new DataSet();
sda.Fill(ds);
//DataTable dt = new DataTable();
//sda.Fill(dt);
}catch(Exception e){
//anything
}finally{
conn.Close();
}
}
其实SqlDataAdapter内部通过SqlDataReader获取数据,而默认情况下SqlDataReader不能获知其查询语句对应的数据库表名,所以上面代码会在DataSet中创建一个新的DataTable,这个新的DataTable会拥有名为返回数据的相应列名,但是DataTable对象的名称是Table,我们有时想得到的table名是我们自定义的,则可以添加:
//创建SqlDataAdapter对象之后,创建DataSet对象之前,“Table”是默认的Table对象名
sda.TableMappings.Add("Table","MyTableName");
或者,直接使用Fill()方法的重载:
sda.Fill(ds, "MyTableName");
以上就是本次总结c#操作SqlServer常用的类和方法,记录下来,方便以后可以查阅。