---------------------- ASP.Net+Android+IOS開發、.Net培訓、期待與您交流! ----------------------
一、 ADO.NET基礎
在.net框架下程序和數據庫之間進行交互操作,使用的技術叫ADO.NET。通過ADO.NET就能在程序中執行SQL語句了,ADO.NET提供了對各種數據庫的統一操作接口。
直接在項目中添加.mdf文件的方式使用數據庫的步驟:右擊項目名è添加è新建項è數據庫è基於服務的數據庫。雙擊.mdf文件會在“服務器資源管理器”中打開.mdf文件,操作方式和在Management Studio中沒有什麼本質不同。要拷貝.mdf文件需要關閉所有指向.mdf文件的鏈接。和在數據庫服務器上創建數據庫沒什麼區別,運行的時候會自動附加(Attach)到SQL Server上。
二、 ADO.NET五大對象
SqlConnection:用於創建程序到數據庫的連接,一個SqlConnection對象代表一個到數據庫的連接。要連接到哪個數據庫,需要使用哪種身份認證信息等,這些信息就組成了“連接字符串”。SqlConnection有兩非常重要的方法:Open():打開程序到數據庫的連接,Close()關閉連接,注意連接Close之後可以再次調用Open()方法打開。
SqlCommand:負責發送命令(SQL語句)給數據庫並得到執行結果的。它有一個重要的屬性:CommandText,要發送的SQL語句。ExecuteNonQuery()方法發送的是更新、刪除、增加的命令,而用此方法發送查詢命令的時候數據庫並不執行。ExecuteReader()方法專門用來發送查詢命令。
SqlDataReader:對於這個類,官方給出的解釋是:提供一種從Sql Server數據庫讀取行的只進流的方式。對這個解釋多少有些不理解。它有一個非常重要的方法:Read()方法,官方解釋是:使SqlDataReader前進到下一條記錄。SqlDataReader可以對返回的數據進行操作,但只是只讀的,而且必須要保持與數據庫的連接纔行.
SqlDataAdapter:官方的解釋是:表示用於填充DataSet和更新SQL Server數據庫的一組命令和一個數據庫連接。它可以把數據庫裏的數據讀出來,然後把這些數據一次性就裝到DataSet中,而且還可以把DataSet中的數據一次性更新到數據庫裏。之所以它能做到這些,因爲它有個重要的方法叫SqlDataAdater.Fill(),調用這個方法就可以把數據填充到DataSet中。
DataSet:官方的解釋叫做:表示數據在內存中的緩存。dataset其實相當於一個小型的離線的數據庫,只不過是在內存中的。dataset有兩大部分組成:表與關係.表就是datatable,關係就是Relation。
三、 連接SQL Server
ADO.Net中的連接類都實現了IDisposable接口,可能使用using進行資源的釋放。
示例代碼:
//定義連接字符串
stringstrConn=@"DataSource=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True";
using (SqlConnection conn = new SqlConnection(strConn)) //new一個連接的對象
{
conn.Open();//打開數據庫連接
MessageBox.Show("連接成功!");
}
注意:using可以確保在其using內部時連接始終是打開的,出了using這個範圍以後自動調用Dispose方法來釋放連接所佔用的所有資源。
四、執行簡單的數據插入
//定義連接字符串
stringstrConn=@"DataSource=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True";
using (SqlConnection conn = new SqlConnection(strConn)) //new一個連接的對象
{
conn.Open();//打開數據庫連接
//簡單的插入數據
string sqlCmd = @"Insert into Employees(employeeid,firstname,city,country)
values(003,'李四','北京','中國')";
//使用指定的連接new一個發送命令的SqlCommand對象
using (SqlCommand cmd = new SqlCommand(sqlCmd, conn))
{
int i = cmd.ExecuteNonQuery();//將Sql語句發送給數據庫並由數據庫執行插入
MessageBox.Show(i + "條數據插入成功!");
}
}
五、執行簡單的查詢
//定義連接字符串
stringstrConn=@"DataSource=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True";
using (SqlConnection conn=newSqlConnection(strConn)) //new一個連接的對象
{
conn.Open();//打開數據庫連接
MessageBox.Show("連接成功!");
//簡單的查詢數據
string sqlCmd="select employeeid,firstname,city,country from Employees";
//使用指定的連接new一個發送命令的SqlCommand對象
using (SqlCommand cmd=newSqlCommand(sqlCmd, conn))
{
//創建一個SqlDataReader對象用來接收cmd.ExecuteReader()的執行結果
SqlDataReader reader=cmd.ExecuteReader();
//通過reader.Read()方法來逐行向下讀取SqlDataReader中的數據
while(reader.Read())
{
//獲取指定列32位有符號整數的值
int id=reader.GetInt32(reader.GetOrdinal("employeeid"));
//獲取指定列的字符串形式的值
string name=reader.GetString(reader.GetOrdinal("firstname"));
string city=reader.GetString(reader.GetOrdinal("city"));
MessageBox.Show("employeeid="+id+",firstname="+name+",city="+city);
}
}
}
六、 SqlDataAdapter和DataSet的使用
SqlDataAdapter類,可以把數據庫裏的數據讀出來,然後把這些數據一下就裝到了dataset中.而且還可以把dataset裏的數據一下又裝到數據庫裏(或更新到數據裏)。它有個重要的方法叫:SqlDataAdater.Fill(...).調用這個方法的時候就可以把數據填充到dataset裏的。SqlDataAdapter能自動打開到數據庫的連接。
SqlDataAdater怎麼從數據庫裏得到數據呢?看下面一段代碼:
//定義連接字符串
string strConn = @"Data Source=.\SQLEXPRESS;
AttachDBFilename=|DataDirectory|\Database1.mdf; Integrated Security=True;User Instance=True";
string sqlcmd = "select employeeid,firstname,city,country from Employees";
using (SqlConnection conn = new SqlConnection())
{
DataSet ds = new DataSet();
//用指定的sql語句和連接來new一個SqlDataAdapter 對象
SqlDataAdapter sda = new SqlDataAdapter(sqlcmd,conn);
//開始發送命令(SqlCommand)給數據庫,把返回的數據填充到dataset裏的表名叫table1的表裏
sda.Fill(ds, "table1");
//上面已經把ds裏的table1填充上數據了,所以可以綁定到table1
GridView1.DataSource = ds.Tables["table1"].DefaultView;
GridView1.DataBind();
}
注:
上述代碼中沒有調用cn.open()方法,是因爲SqlDataAdapter能自動打開到數據庫的連接。
sda.Fill(ds, "table1")中參數的意思是把數據填充到ds的table1裏。
sda.Fill(ds, "table1")方法還需要完成的事有:
1、打開到數據庫的連接;
2、發送SqlCommand到數據庫;
3、 把數據庫返回的數據填充到DataSet中,還指定了往DataSet的哪個表中放數據,如果沒有指定的表就自動創建一個名叫table1的表;
4、關閉數據庫連接。
七、 映射
//定義連接字符串
string strConn=@"Data Source=.\SQLEXPRESS; AttachDBFilename=|DataDirectory|\Database1.mdf; Integrated Security=True;User Instance=True";
string sqlcmd = "select employeeid,firstname,city,country from Employees";
using (SqlConnection conn = new SqlConnection())
{
DataSet ds = DataSet();
//用指定的sql語句和連接來new一個SqlDataAdapter 對象 //添加一個映射,源表名爲:employees,dataset裏表名稱爲:table1
SqlDataAdapter sda = new SqlDataAdapter(sqlcmd,conn);
sda.TableMappings.Add("Employees", "table1");
//字段名稱的對應關係
da.TableMappings[0].ColumnMappings.Add("employeeid", "id號");
da.TableMappings[0].ColumnMappings.Add("firstname", "姓名");
da.TableMappings[0].ColumnMappings.Add("city", "城市");
da.TableMappings[0].ColumnMappings.Add("country", "國家");
//如果添加了映射,那麼sda.Fill(ds,源表名)方法的第二個參數必須和 //sda.TableMappings.Add("Employees", "table1")第一個參數相同
sda.Fill(ds, "Employees");
GridView1.DataSource = ds.Tables["table1"].DefaultView;
GridView1.DataBind();
}
---------------------- ASP.Net+Android+IOS開發、.Net培訓、期待與您交流! ----------------------
詳細請查看:http://edu.csdn.net