早晨迫于生計,對自己進行了一次資料庫操作得掃盲工作,避免以後重新忘記,記錄在此。
//對資料庫進行連接配接的代碼
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中的。