C#如何和SQL Server2008进行交互操作

来源:互联网 发布:威少11赛季数据 编辑:程序博客网 时间:2024/06/05 08:09

C#如何和SQL Server2008进行交互呢?

首先必须得先登录数据库,而SQL Server2008提供了两种登录方式,一种是以SQLServer身份验证的形式登录(要密码);一种是以Windows身份验证(不要密码)。连接串如下:

Windows身份验证连接串

Data Source=服务器名称或IP\实例名称;Initial Catalog=数据库名称;Integrated Security=True;


SQLServer身份验证连接串

Data Source=服务器名称或IP\实例名称;Initial Catalog=数据库名称;USER ID=用户名;PASSWORD=密码;

(简写形式:server=.;database=数据库;uid=用户名;pwd=密码;)


先过一过基础

Connection:抽象概念

SqlConnection:用于SQLServer数据库
属性:
ConnectionString:连接串  String类型
State:连接状态,ConnectionState 枚举类型
    Open
    Closed
函数:
Open():打开连接
Close():关闭连接(不需要时立即关闭)


Command:命令对象 抽象概念
SqlCommand:对应于SQLServer的命令对象,用于封装SQL语句,依靠连接传输命令与结果
属性:
CommandText:命令文本,指的就是SQL语句 String
Connection:所依赖的连接对象 SqlConnection

函数:
int ExecuteNonQuery():专用于执行增删改语句,返回一个受影响的行数
object ExecuteScalar():专用于查询只得到一个值的结果,如果不能得到值,将返回null
SqlDataReader ExecuteReader():专用于查询多行多列的结果

DataReader:抽象概念,表示数据阅读器只读、只进
SqlDataReader:专用于SQLServer数据库的阅读器
创建:需要依靠SqlCommand的ExecuteReader()函数创建
属性:
HasRows:bool 判断是否有剩余的未读数据行
函数:
bool Read():将行指针移到下一行,如果行存在,返回true,否则返回false
    一开始时,行指针指向第一行的前面
void Close():阅读器对SqlConnection是独占式,只有调用该函数后连接才会被释放,否则无法提供给另一个阅读器使用

如何读取每一行的各个单元格?
利用索引器(数组)
reader[列序号]  0开始的序号
reader["列名"] 

HasRows:判断当前行指针指向的目标行是否有数据,不会移动行指针
Read():先将行指针下移一行,再判断该行存不存在

数据库类型和C#类型的映射关系:
数据库类型        C#类型
int/bigint/
smallint/tinyint    int

real                    float
float                   double

char/varchar
nchar/nvarchar
text/ntext           String

datetime           DateTime



数据库操作步骤:

1、创建SqlConnection对象

SqlConnection conn = new ...();
conn.ConnectionString = "连接串";

SqlConnection conn = new ...(连接串);
2、打开连接
conn.Open();
3、进行增删改查操作
(1):创建命令对象
    SqlCommand cmd = new SqlCommand();
    cmd.CommandText = "语句";
    cmd.Connection = conn;

    SqlCommand cmd = new SqlCommand(语句,连接);
(2):根据语句调用函数
    i:ExecuteNonQuery()  //专用于执行增删改语句,返回一个受影响的行数
    ii:ExecuteScalar()       //专用于查询只得到一个值的结果,如果不能得到值,将返回null
    iii:ExecuteReader()    //专用于查询只得到一个值的结果,如果不能得到值,将返回null

        SqlDataReader reader = cmd.ExecuteReader();


        while(reader.Read()) {
            (真正类型)reader[列序号或列名];
        }
        reader.Close();//注意SqlDataReader是独占式的,用完就关闭,否则会使其他的SqlDataReader对象无法使用
4、关闭连接
conn.Close();
5、处理结果


断开式连接

DataSet和DataAdapter

DataSet:临时数据库,实现断开式的大批量数据操作
DataAdapter:数据适配器,专用于为DataSet提供数据增删改查

DataSet创建:
DataSet ds = new DataSet("临时数据库名称");//数据集对象

SqlDataAdapter:专用于SQLServer数据库的适配器
SqlDataAdapter adapter = new SqlDataAdapter(select SQL语句,连接);
注意:参数个数、类型和Command是一样的,但语句必须是查询语句

函数:
Fill(数据集,表名):从真实数据库中检索数据,填充到临时数据库中
Update(数据集,表名):将修改过后的临时数据库的数据更新回真实数据库

表名:自定义的表名,并非真实数据库的表名

属性:
SelectCommand      //查询命令
InsertCommand       //增加命令
DeleteCommand     //删除命令
UpdateCommand   //修改命令

以上四个属性的类型是SqlCommand,分别表示不同的SQL语句

使用步骤:

1、创建连接
SqlConnection conn = new SqlConnection("连接串");
2、创建DataSet
DataSet ds = new DataSet("名称");
3、创建适配器
SqlDataAdapter ada = new SqlDataAdapter(SQL, conn);
4、填充数据
ada.Fill(ds, "表名");
5、绑定数据源 (通常为DataSet中的某个表)
数据控件名.DataSource = ds.Tables["表名"];


0 0