天天看點

c#對sql server的基本操作

         早晨迫于生計,對自己進行了一次資料庫操作得掃盲工作,避免以後重新忘記,記錄在此。

//對資料庫進行連接配接的代碼

using System;

using System.Data.SqlClient;

namespace DBconnective

{

 /// <summary>

 /// Class1 的摘要說明。

 /// </summary>

 class Class1

 {

  /// <summary>

  /// 應用程式的主入口點。

  /// </summary>

  [STAThread]

  static void Main(string[] args)

  {

   string source = "server=(local);"+"integrated security=SSPI;"+"database=Northwind";

   SqlConnection sc = new SqlConnection(source);

   try

   {

    sc.Open();

    Console.WriteLine("open success!");

   }

   catch(Exception ex)

   {

    Console.WriteLine(ex.Message.ToString());

   }

   finally

   {

    sc.Close();

    Console.WriteLine("close success!");

   }

   Console.Read();

  }

 }

}

//SqlCommand和SqlDataReader搭配讀取資料的操作

using System;

using System.Data.SqlClient;

namespace DBconnective

{

 /// <summary>

 /// Class1 的摘要說明。

 /// </summary>

 class Class1

 {

  /// <summary>

  /// 應用程式的主入口點。

  /// </summary>

  [STAThread]

  static void Main(string[] args)

  {

   string source = "server=(local);"+"integrated security=SSPI;"+"database=Northwind";

   SqlConnection sc = new SqlConnection(source);

   string sel = "SELECT * From Customers";

//   string sel = "Select ContactName,CompanyName From Customers";

   try

   {

    sc.Open();

    Console.WriteLine("open success!");

    SqlCommand cmd = new SqlCommand(sel,sc);

    SqlDataReader rd = cmd.ExecuteReader();

    int i =0;

//讀取所有列的名稱

    while(i<rd.FieldCount)

    {

     Console.WriteLine(rd.GetName(i));

     i++;

    }

    rd.Close();

//讀取contactname和companyname的值

//    while(rd.Read())

//    {

//     Console.WriteLine("ContactName:{0,-20} CompanyName:{1}",rd[0],rd[1]);

//    }

   }

   catch(Exception ex)

   {

    Console.WriteLine(ex.Message.ToString());

   }

   finally

   {

    sc.Close();

    Console.WriteLine("close success!");

   }

   Console.Read();

  }

 }

}

DataReader的局限性:

1:DataReader無法直接執行個體化,必須調用ExecuteReader()方法後從command對象中傳回。

2:DataReader隻能沿着一個方向進行資料的讀取。

3:DataReader在讀取資料庫時會使資料庫連接配接一直處于連接配接狀态,除非進行顯式的關閉。

//用對dataset進行填充的方式分别通路列和行

//首先初始化SqlDataAdapter,然後填充資料集,最後調用DataRow來通路資料

using System;

using System.Data.SqlClient;

using System.Data;

namespace DBconnective

{

 /// <summary>

 /// Class1 的摘要說明。

 /// </summary>

 class Class1

 {

  /// <summary>

  /// 應用程式的主入口點。

  /// </summary>

  [STAThread]

  static void Main(string[] args)

  {

   string source = "server=(local);"+"integrated security=SSPI;"+"database=Northwind";

   SqlConnection sc = new SqlConnection(source);

   string sel1 = "SELECT * From Customers";

   SqlDataAdapter sa = new SqlDataAdapter(sel1,sc);

   DataSet ds = new DataSet();

   sa.Fill(ds,"Customers");

   foreach(DataRow dr in ds.Tables["Customers"].Rows)

   {

    Console.WriteLine("ContactName:{0,-20}CompanyName:{1}",dr["ContactName"],dr["CompanyName"]);

   }

   foreach(DataColumn dc in ds.Tables["Customers"].Columns)

   {

    Console.WriteLine("filename:{0}",dc.ColumnName);

   }

   Console.Read();

  }

 }

}

1:DataSet是資料的脫機容器,也就是說通過資料庫的連接配接将所有資料取到本地緩存後,斷開資料庫的連接配接,其後的操作都是針對這些脫機資料進行的操作。

2:一個DataSet可以包含若幹個DataTable,每個DataTable包括若幹個DataColumn,其中DataTable和DataColumn包括一些屬性,而具體的資料則是存儲在

DataRow中的。