當(dāng)年學(xué)習(xí)ADO.NET的筆記
更新時(shí)間:2012年03月06日 23:15:14 作者:
那些年學(xué)習(xí)了ASP.NET后又開始學(xué)習(xí)ASP.NET的新知識(shí),ADO.NET用于訪問數(shù)據(jù)庫,一般可以分為連接模式和非連接模式
那些年我還在學(xué)ADO.NET
那些年學(xué)習(xí)了ASP.NET后又開始學(xué)習(xí)ASP.NET的新知識(shí),ADO.NET用于訪問數(shù)據(jù)庫,一般可以分為連接模式和非連接模式。連接模式指的是在訪問數(shù)據(jù)時(shí),一直與數(shù)據(jù)庫保持連接,訪問完數(shù)據(jù)后才與數(shù)據(jù)庫斷開連接,主要采用的ADO.NET對象是Connection、Command、DataReader等;連接模式指的是通過數(shù)據(jù)集的方式對數(shù)據(jù)庫進(jìn)行操作,將數(shù)據(jù)讀到內(nèi)存中,從而完成數(shù)據(jù)的操作,數(shù)據(jù)集會(huì)自動(dòng)更新到數(shù)據(jù)庫,主要采用ADO.NET對象是DataAdapter、DataSet等。下面的我們就來看一下代碼吧。
本示例代碼采用工廠模式的方式,這樣就可以達(dá)到只改變少量的代碼完成數(shù)據(jù)庫之間的切換,工廠模式是要采用的對象有以下幾個(gè):DbProviderFactory、DbConnection、DbTransaction
、DbCommand、DbDataReader、DbDataAdapter、DbCommandBuilder等。
1、 共同的連接串
string ProviderName = "System.Data.SqlClient";
string ConnStr = "Data Source=.;Initial Catalog=Northind;Integrated Security=True";
string sqlStr = "select * from dbo.Categories";
2、 非連接模式代碼如下:
public void getSqlConnection()
{
//得到一個(gè)數(shù)據(jù)提供者,根據(jù)其傳入的數(shù)據(jù)提供者對象
DbProviderFactory dbf = DbProviderFactories.GetFactory(ProviderName);
//創(chuàng)建連接
DbConnection conn = dbf.CreateConnection();
//連接字符串
conn.ConnectionString = ConnStr;
conn.Open();
DbTransaction ts = conn.BeginTransaction();
DbCommand dbcmd = null;
try
{
dbcmd = dbf.CreateCommand();
dbcmd.CommandText = sqlStr;
dbcmd.Connection = conn;
dbcmd.Transaction = ts;
DbDataReader dr = dbcmd.ExecuteReader();
while (dr.Read())
{
Console.WriteLine(dr[1].ToString());
}
dr.Close();
ts.Commit();
}
catch (Exception e)
{
ts.Rollback();
}
finally
{
conn.Close();
if (dbcmd != null)
{
dbcmd.Dispose();
}
}
}
效果:
public void getDataSetConnection()
{
//得到一個(gè)數(shù)據(jù)提供者,根據(jù)其傳入的數(shù)據(jù)提供者對象
DbProviderFactory dbf = DbProviderFactories.GetFactory(ProviderName);
//創(chuàng)建連接
DbConnection conn = dbf.CreateConnection();
//連接字符串
conn.ConnectionString = ConnStr;
//創(chuàng)建DataAdapter對象
DbDataAdapter da = dbf.CreateDataAdapter();
//創(chuàng)建自動(dòng)生成sql語句對象
DbCommandBuilder dbCmdb = dbf.CreateCommandBuilder();
using (DbCommand dbcmd = dbf.CreateCommand())
{
dbcmd.CommandText = sqlStr;
dbcmd.Connection = conn;
//DbDataAdapter指定命令
da.SelectCommand = dbcmd;
//DbCommandBuilder指定dataAdpter
dbCmdb.DataAdapter = da;
DataSet ds = new DataSet();
da.Fill(ds);
// ds.Tables[0].Rows[0].Delete();
da.Update(ds);
DataTable dt = ds.Tables[0];
DataRow dr;
for (int i = 0; i < dt.Rows.Count; i++)
{
dr = dt.Rows[i];
Console.WriteLine(dr[1] + " " + dr[2]);
}
}
}
效果:
總結(jié)
那些年學(xué)習(xí)ADO.NET,基本了解了怎樣去訪問數(shù)據(jù)庫,對其進(jìn)行操作,現(xiàn)在.NET又有了一些新的方法,比如說使用Linq、DbContext等;此文以回憶那些年學(xué)習(xí)的日子。
那些年學(xué)習(xí)了ASP.NET后又開始學(xué)習(xí)ASP.NET的新知識(shí),ADO.NET用于訪問數(shù)據(jù)庫,一般可以分為連接模式和非連接模式。連接模式指的是在訪問數(shù)據(jù)時(shí),一直與數(shù)據(jù)庫保持連接,訪問完數(shù)據(jù)后才與數(shù)據(jù)庫斷開連接,主要采用的ADO.NET對象是Connection、Command、DataReader等;連接模式指的是通過數(shù)據(jù)集的方式對數(shù)據(jù)庫進(jìn)行操作,將數(shù)據(jù)讀到內(nèi)存中,從而完成數(shù)據(jù)的操作,數(shù)據(jù)集會(huì)自動(dòng)更新到數(shù)據(jù)庫,主要采用ADO.NET對象是DataAdapter、DataSet等。下面的我們就來看一下代碼吧。
本示例代碼采用工廠模式的方式,這樣就可以達(dá)到只改變少量的代碼完成數(shù)據(jù)庫之間的切換,工廠模式是要采用的對象有以下幾個(gè):DbProviderFactory、DbConnection、DbTransaction
、DbCommand、DbDataReader、DbDataAdapter、DbCommandBuilder等。
1、 共同的連接串
復(fù)制代碼 代碼如下:
string ProviderName = "System.Data.SqlClient";
string ConnStr = "Data Source=.;Initial Catalog=Northind;Integrated Security=True";
string sqlStr = "select * from dbo.Categories";
2、 非連接模式代碼如下:
復(fù)制代碼 代碼如下:
public void getSqlConnection()
{
//得到一個(gè)數(shù)據(jù)提供者,根據(jù)其傳入的數(shù)據(jù)提供者對象
DbProviderFactory dbf = DbProviderFactories.GetFactory(ProviderName);
//創(chuàng)建連接
DbConnection conn = dbf.CreateConnection();
//連接字符串
conn.ConnectionString = ConnStr;
conn.Open();
DbTransaction ts = conn.BeginTransaction();
DbCommand dbcmd = null;
try
{
dbcmd = dbf.CreateCommand();
dbcmd.CommandText = sqlStr;
dbcmd.Connection = conn;
dbcmd.Transaction = ts;
DbDataReader dr = dbcmd.ExecuteReader();
while (dr.Read())
{
Console.WriteLine(dr[1].ToString());
}
dr.Close();
ts.Commit();
}
catch (Exception e)
{
ts.Rollback();
}
finally
{
conn.Close();
if (dbcmd != null)
{
dbcmd.Dispose();
}
}
}
效果:
復(fù)制代碼 代碼如下:
public void getDataSetConnection()
{
//得到一個(gè)數(shù)據(jù)提供者,根據(jù)其傳入的數(shù)據(jù)提供者對象
DbProviderFactory dbf = DbProviderFactories.GetFactory(ProviderName);
//創(chuàng)建連接
DbConnection conn = dbf.CreateConnection();
//連接字符串
conn.ConnectionString = ConnStr;
//創(chuàng)建DataAdapter對象
DbDataAdapter da = dbf.CreateDataAdapter();
//創(chuàng)建自動(dòng)生成sql語句對象
DbCommandBuilder dbCmdb = dbf.CreateCommandBuilder();
using (DbCommand dbcmd = dbf.CreateCommand())
{
dbcmd.CommandText = sqlStr;
dbcmd.Connection = conn;
//DbDataAdapter指定命令
da.SelectCommand = dbcmd;
//DbCommandBuilder指定dataAdpter
dbCmdb.DataAdapter = da;
DataSet ds = new DataSet();
da.Fill(ds);
// ds.Tables[0].Rows[0].Delete();
da.Update(ds);
DataTable dt = ds.Tables[0];
DataRow dr;
for (int i = 0; i < dt.Rows.Count; i++)
{
dr = dt.Rows[i];
Console.WriteLine(dr[1] + " " + dr[2]);
}
}
}
效果:
總結(jié)
那些年學(xué)習(xí)ADO.NET,基本了解了怎樣去訪問數(shù)據(jù)庫,對其進(jìn)行操作,現(xiàn)在.NET又有了一些新的方法,比如說使用Linq、DbContext等;此文以回憶那些年學(xué)習(xí)的日子。
相關(guān)文章
.NET Core 處理 WebAPI JSON 返回?zé)┤说膎ull為空
這篇文章主要介紹了.NET Core 處理 WebAPI JSON 返回?zé)┤说膎ull為空,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01ASP.NET插件uploadify批量上傳文件完整使用教程
這篇文章主要為大家詳細(xì)介紹了ASP.NET插件uploadify批量上傳文件完整使用教程,感興趣的小伙伴們可以參考一下2016-07-07使用UserControl做網(wǎng)站導(dǎo)航條的思路 分析
使用UserControl做網(wǎng)站導(dǎo)航條的思路 分析...2007-09-09.NET 解決TabControl 頁里面多余邊距問題經(jīng)驗(yàn)分享
不知道各位同學(xué)有沒有遇到在向TabPage添加內(nèi)容后,里面的東西總是填不滿 TabPage,總是有幾個(gè)像素的空白邊距2012-04-04ASP.NET?MVC使用jQuery的Load方法加載靜態(tài)頁面及注意事項(xiàng)
這篇文章介紹了ASP.NET?MVC使用jQuery加載靜態(tài)頁面的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-09-09ASP.NET中MVC傳遞數(shù)據(jù)的幾種形式總結(jié)
這篇文章主要介紹了ASP.NET中MVC傳遞數(shù)據(jù)的幾種形式,以實(shí)例形式較為詳細(xì)的分析總結(jié)了MVC數(shù)據(jù)傳遞的相關(guān)技巧與注意事項(xiàng),具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-10-10充分利用ASP.NET的三種緩存提高站點(diǎn)性能的注意方法
充分利用ASP.NET的三種緩存提高站點(diǎn)性能的注意方法...2007-09-09