首页 > 代码库 > 141019●用C#操作SQL数据库

141019●用C#操作SQL数据库

数据库操作:ADO.NET

一、命名空间:

         using System.Data;

         using System.Data.SqlClient;     //针对SqlServer进行优化了的数据访问类的空间

         System.Data.OleDB;System.Data.ODBC;    //命名空间通用数据访问类的空间。

 

ODBC——Open DataBase Connection开放式数据互联

 

二、步骤:

         1、建立链接对象——建一个通向数据库的通道。

         2、打开通道

         3、操作数据库

         4、关闭通道

 

三、类及使用

         链接字符串

                  方法一:server=.;database=mydb;uid=sa;pwd=123

                   方法二:菜单栏中“视图”→“服务器资源管理器”→右键→“添加连接”→选择“Sql Server”→VS窗口右边的“属性”→“链接字符串”

 

(一)、链接对象:

         SqlConnection:链接数据库的类

1、构造函数:

         SqlConnection()

         SqlConnection(string connectionString)

2、属性:

         ConnectionString:字符串类型,连接字符串

         State:连接状态

3、方法:

         Open()

         Close()

         CreateCommand();    //生成一个通过本链接对象来访问数据库的SqlCommand实例。

4、举例

         string connectionString = "server=.;database=mydb;uid=sa;pwd=123";

         SqlConnection conn = new SqlConnection(connectionString);

         conn.Open();

         //操作

         conn.Close();

(二)、命令对象

         SqlCommand:数据库操作的命令对象

1、构造函数:

         SqlCommand();  //推荐

         SqlCommand(string sql)

         SqlCommand(string sql,SqlConnection conn)

2、属性:

         CommandText:字符串类型,要执行的SQL语句、存储过程

         CommandType:CommandType枚举类型。CommandType.Text--要执行的是SQL语句(默认);CommandType.StoredProcedure——要执行的是存储过程。

      如何调用存储过程?

        1.把CommandText赋为存储过程的名。

        2.把CommandType赋为CommandType.StoredProcedure

        3.使用cmd.Parameters.AddWithValue()为存储过程参数赋值。

         Connection:SqlConnection类型,通过哪个链接通道访问数据库

         Parameters:对CommandText中的SQLServer局部变量进行赋值或取值

3.方法:

         ExecuteNonQuery();    //执行增删改的方法,返回影响的行数。

         ExecuteReader();    //用来执行查询的方法,返回SqlDataReader对象,用来执行查询。

         ExecuteScalar();    //返回首行首列,一般用来执行统计查询。

                   int count=(int)ExecuteScalar();

4、举例:

         string connectionString = "server=.;database=mydb;uid=sa;pwd=123";

         SqlConnection conn = new SqlConnection(connectionString);

 

         SqlCommand cmd = new SqlCommand();

         cmd.Connection = conn;

         cmd.CommandText = "Sql语句";

 

         conn.Open();

         cmd.ExecuteNonQuery();

         conn.Close();

 

(三)、读取器对象。在内存中只占一条数据的空间。获取数据库中数据。SqlDataReader

1、构造函数

         无法new出来。原因是,它的构造函数是非public的。

         它只有一种实例化的方式:SqlDataReader dr = cmd.ExecuteReader();

2、属性

         .HasRows    //返回bool型数据,判断读取器中是否能读取数据。

3、方法

         .Read();    //把数据读取到SqlDataReader对象中来。如果读取成功,返回true;否则返回false。

         dr.Close();    //关闭读取器。关闭链接时,读取器随之关闭。

         dr[“列名”];    //读取内存中当前SqlDataReader对象中的某列数据,读出来的数据是Object类型。

         dr[索引号];    //读取内存中当前SqlDataReader对象中的某列数据,读出来的数据是Object类型。

         dr.GetString(索引号),dr.Getint(索引号)……

4、举例:

    string connectionString = @"server=.\sqlexpress;database=mydb;uid=sa;pwd=sa";

    SqlConnection conn = new SqlConnection(connectionString);

 

    SqlCommand cmd = new SqlCommand();

    cmd.Connection = conn;

    cmd.CommandText = "select * from info";

           

    conn.Open();

    SqlDataReader dr = cmd.ExecuteReader();

    while (dr.Read())

    {

        Console.WriteLine(dr["Code"].ToString()+dr["Name"].ToString());

    }

    conn.Close();

 

 

服务——服务器管理器

 

 

 

 

 

 

装箱(Boxing)

         把数据从值类型变成引用类型;把数据从栈空间转型到堆空间。

拆箱(Unboxing)

         把数据从引用类型变成值类型;把数据从堆空间转型到栈空间。

 

         int n=19;

         object obj=n;    //装箱。

         n=20;

         int m=(int)obj;    //拆箱。

 

 

坏处:

         1、装箱,占空间,占时间,运行慢。

         2、拆箱,占用时间,可能出现类型异常。

 

异常处理

         异常,与正常情况有差异,不一定是错误。

 

         try

         {

                   可能会出现异常的代码;

         }

         [catch[(异常类型 异常对象)]

         {

                   一旦出现异常,将会进入此处,

                   对错误信息进行处理;

         }]

         [finally    //不论程序是否运行正常,最后一定执行,常用来关闭链接通道。

         {

         }]

 

141019●用C#操作SQL数据库