C#连接数据库几段代码。


使用这段代码前先引用:
System.dll和System.Data.dll
代码如下:

using System;
using System.Data;          
using System.Data.SqlClient;
//这里要特别注意 引用System.dll程序集
//添加System.dll程序集合,因为该集合包含System.ComponentModel命名空间
//此命名空间包括用于实现属性和类型转换器、绑定到数据源以及授权组件的基类和接口。 
//这里使用的是System.ComponentModel命名空间中的Component类,该类是System.Data.Common.Dbcommand等类的基类
//一定要引用该类才可以使用System.Data.Common.Dbcommand的派生类public class SqlData
{
         public static void Main()
         {
          SqlConnection thisConnection = new SqlConnection(@"SERVER=192.168.1.102;uid=sa;pwd=sa;DATABASE=goto63net"); //先建立连接              thisConnection.Open();//打开连接
              SqlCommand thisCommand = thisConnection.CreateCommand();
              thisCommand.CommandText = "SELECT user_id from userinfo";
              SqlDataReader thisReader = thisCommand.ExecuteReader();
              //sqldatareader不可以用new 必须直接与command关联
              thisReader.Read();
              Console.WriteLine("/t{0}", thisReader["user_id"]);
              thisReader.Close();
              thisConnection.Close();         }
}这样就可以连接数据库了。 
这段是运用DbproviderFacrory类工厂来创建的
引用程序集System.dll和System.Data.dll
代码:
using System;
using System.Data;
using System.Data.Common;
//这里的data是在程序集System.date.dll里面,但这个程序集不是默认访问的,所以我自己添加引用
//还要就是添加System因为他和System.data.dll的基类对象所在
public class Test
{
        public static void Main()
        {
            DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.SqlClient");
            //使用DbProviderFactories类的静态方法GetFactory返回一个DbProviderFactory对象
            //这里的构造函数里面的字符串放的是个数据库提供类的命名空间
            //System.Data.SqlClient,System.Data.Odbc,System.Data.OleDb
            //string connstr = "Data Source=(local);Initial Catalog=films;User Id=sa;Password=sa;";
            string connstr = "SERVER=(local);uid=sa;pwd=sa;DATABASE=films";
            //这是两种连接字符串
            //这是字符串连接函数
            DbConnection conn = factory.CreateConnection();      //是用类工厂创建一个Dbconnection对象
            //数据库连接DbConnection对象
            conn.ConnectionString = connstr;
            try
            {
                conn.Open(); //打开
                Console.WriteLine(conn.State);//State是描述数据打开与关闭状态
                DbCommand cmd = factory.CreateCommand(); //使用类工厂创建一个DbCommand对象
                cmd.CommandText = "select*from movies";//这是sql命令
                cmd.Connection = conn;//Connecton是与数据源的连接。
                DbDataReader dr = cmd.ExecuteReader();
                //DbDataReader对象是一个向前只读的数据源连接对象,记住该对象出现一定要与某数据源才能用所以不能用new方法来创建
                while (dr.Read())//Read方法读取:如果存在多个行,则为 true;否则为 false
                {
                    Console.WriteLine("字段1={0},字段2={1},字段3={2},字段4={3},字段5={4}", dr["movie_id"], dr["movie_title"], dr["movie_Year"], dr["movie_Directorid"], dr["studio"]);
                }
                //       dr.Close(); //关闭DbDataReader对象
                dr.Dispose();//或释放该对象
                cmd.Dispose(); //释放对象
                //conn.Close(); //关闭对象
                conn.Dispose();//释放对象
            }
            catch (Exception ex)
            {//捕捉错误
                Console.WriteLine(ex.Message);
            }
            finally
            {
                conn.Close(); //都执行这句关闭数据库
            }
        }
}

但注意因为要用类工厂创建时要了基类如Dbconnection所以他会比sqlconnections少一些特性.

上面都有连接模式,现在我们来创建一个无连接模型

首先还是引用程序集:system.dll,System.Data.dll,这里还要多引用一个System.XML程序集合。
因为DataSet继承了该程序集合中System.Xml.Serialization.IXmlSerializable接口
代码:

using System;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
//这里用到了DataSet来创建无连接模式,就必须包含System.XML
//因为在DataSet引用了System.Xml.Serialization.IXmlSerializable 接口
public class SqlData
{
      public static void Main()
      {
          string sql = "select*from movies";
          string connstr = "Data Source=(local);Initial Catalog=films;User Id=sa;Password=sa;";
          SqlDataAdapter da = new SqlDataAdapter(sql,connstr);
          DataSet ds = new DataSet();
          //这里是创建DataSet类对象,也可在DataSet("DataSet_name"),给定名初始该对象
          da.Fill(ds,"movies");//向DaraSet 中添加数据,并创建一个Movies内存表
          //如没有则使用默认的Table表名
          DataTable dt = ds.Tables["movies"];
          //Tables表示FataSet中表的集合
          //这里Tables["movies"]是返回表集合中的一个表
          for (int i = 0; i < dt.Rows.Count;i++ )
          {
              DataRow row = dt.Rows[i];
              Console.WriteLine(row["movie_Title"]);    //循环显示值
          }
      }