早晨迫于生计,对自己进行了一次数据库操作得扫盲工作,避免以后重新忘记,记录在此。
//对数据库进行连接的代码
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中的。