C#鏈接數(shù)據(jù)庫幾種方法

ado.net提供了豐富的數(shù)據(jù)庫操作,這些操作可以分為三個步驟:

第一拄显,使用SqlConnection對象連接數(shù)據(jù)庫苟径;

第二,建立SqlCommand對象躬审,負責SQL語句的執(zhí)行和存儲過程的調(diào)用棘街;

第三蟆盐,對SQL或存儲過程執(zhí)行后返回的“結(jié)果”進行操作。

對返回“結(jié)果”的操作可以分為兩類:

一是用SqlDataReader直接一行一行的讀取數(shù)據(jù)集蹬碧;

二是DataSet聯(lián)合SqlDataAdapter來操作數(shù)據(jù)庫。

兩者比較:

SqlDataReader時刻與遠程數(shù)據(jù)庫服務器保持連接炒刁,將遠程的數(shù)據(jù)通過“流”的形式單向傳輸給客戶端恩沽,它是“只讀”的。由于是直接訪問數(shù)據(jù)庫翔始,所以效率較高罗心,但使用起來不方便。

DataSet一次性從數(shù)據(jù)源獲取數(shù)據(jù)到本地城瞎,并在本地建立一個微型數(shù)據(jù)庫(包含表渤闷、行、列脖镀、規(guī)則飒箭、表之間的關系等),期間可以斷開與服務器的連接蜒灰,使用SqlDataAdapter對象操作“本地微型數(shù)據(jù)庫”弦蹂,結(jié)束后通過SqlDataAdapter一次性更新到遠程數(shù)據(jù)庫服務器。這種方式使用起來更方强窖,便簡單凸椿。但性能較第一種稍微差一點。(在一般的情況下兩者的性能可以忽略不計翅溺。)

一.通過ConfigurationManager.ConnectionStrings獲取存儲在webconfig中數(shù)據(jù)庫的配置信息脑漫,進行數(shù)據(jù)庫鏈接

需要引用using System.Web.Configuration命名空間

using System.Data;

using System.Data.SqlClient;

using System.Configuration;

public static void SQLConn()

{

//獲取數(shù)據(jù)庫鏈接信息

String connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;

//鏈接數(shù)據(jù)庫

SqlConnection conn = new SqlConnection(connStr);

//打開數(shù)據(jù)庫鏈接

Conn.Open();

SqlCommand cmd = new SqlCommand("select * from stocklog", Conn);

DataSet ds = new DataSet();

SqlDataAdapter da = new SqlDataAdapter(cmd);

da.Fill(ds);

}

通過string connStr=ConfigurationManager.ConnectionString[“connStr”].ConnectionString;獲得數(shù)據(jù)庫連接的一些配置信息,即“數(shù)據(jù)源”咙崎、“數(shù)據(jù)庫名”优幸、“用戶名”、“密碼”褪猛,將這些信息都保存在connStr中劈伴。

webconfig中配置如下:

<configuration>

<connectionStrings>

<add name="connStr" connectionString="Server=.;DataBase=;Uid=;Pwd=">

</connectionStrings>

</configuration>

二.利用Connection類對象鏈接數(shù)據(jù)庫

Connection類有四種:SqlConnection,OleDbConnection握爷,OdbcConnection和OracleConnection跛璧。

SqlConnection類的對象連接SQL Server數(shù)據(jù)庫;OracleConnection 類的對象連接Oracle數(shù)據(jù)庫新啼;OleDbConnection類的對象連接支持OLEDB的數(shù)據(jù)庫追城,如Access;而OdbcConnection類的對象連接任何支持ODBC的數(shù)據(jù)庫燥撞。與數(shù)據(jù)庫的所有通訊最終都是通過Connection對象來完成的座柱。

SqlConnection conn = new SqlConnection("Server=.;DataBase=;Uid=;Pwd=");

conn.Open();

注意:使用不同的Connection對象需要導入不同的命名空間迷帜。OleDbConnection的命名空間為System.Data.OleDb。SqlConnection的命名空間為System.Data.SqlClient色洞。OdbcConnection的命名空間為System.Data.Odbc戏锹。OracleConnection的命名空間為System.Data.OracleClinet。

1火诸、集成的Windows身份驗證語法范例

string constr = "server=.;database=myschool;integrated security=SSPI";

說明:程序代碼中锦针,設置了一個針對Sql

Server數(shù)據(jù)庫的連接字符串。其中server表示運行Sql

Server的計算機名置蜀,由于程序和數(shù)據(jù)庫系統(tǒng)是位于同一臺計算機的奈搜,所以我們可以用.(或localhost)取代當前的計算機名。database表示所使用的數(shù)據(jù)庫名(myschool)盯荤。由于我們希望采用集成的Windows驗證方式馋吗,所以設置

integrated security為SSPI即可。

2秋秤、Sql Server 2005中的Windows身份驗證模式如下:

string constr = "server=.;database=myschool;uid=sa;pwd=sa";

說明:程序代碼中宏粤,采用了使用已知的用戶名和密碼驗證進行數(shù)據(jù)庫的登錄。數(shù)據(jù)庫連接字符串是不區(qū)分大小寫的灼卢。uid為指定的數(shù)據(jù)庫用戶名商架,pwd為指定的用戶口令。為了安全起見芥玉,一般不要在代碼中包括用戶名和口令蛇摸,你可以采用前面的集成的Windows驗證方式或者對Web.Config文件中的連接字符串加密的方式提高程序的安全性。

3灿巧、Sql Server 2005中的Sql Server身份驗證模式如下:

string constr = "data source=.;initial catalog=myschool;user id=sa;pwd=sa";

說明:程序代碼中data source 表示運行數(shù)據(jù)庫對應的計算機名赶袄,initial catalog表示所使用的數(shù)據(jù)庫名。uid為指定的數(shù)據(jù)庫用戶名抠藕,pwd為指定的用戶口令饿肺。

SqlCommand對象(負責執(zhí)行sql語句或存儲過程的調(diào)用)

命名空間:System.Data.SqlClient.SqlCommand;

SqlCommand對象用于執(zhí)行數(shù)據(jù)庫操作,操作方式有三種:

SQL語句:command.CommandType = CommandType.Text;

存儲過程:command.CommandType = CommandType.StoredProcedure;

整張表:command.CommandType = CommandType.TableDirect;

實例化一個SqlCommand對象

SqlCommand command = new SqlCommand();

command.Connection = sqlCnt;? ? ? ? ? ? // 綁定SqlConnection對象

或直接從SqlConnection創(chuàng)建

SqlCommand command = sqlCnt.CreateCommand();

常用方法:

command.ExecuteNonQuery(): 返回受影響函數(shù),如增、刪达传、改操作;

command.ExecuteScalar():執(zhí)行查詢溉跃,返回首行首列的結(jié)果;

command.ExecuteReader():返回一個數(shù)據(jù)流(SqlDataReader對象)告抄。

常用操作

① 執(zhí)行SQL

SqlCommand cmd = conn.CreateCommand();? ? ? ? ? ? ? //創(chuàng)建SqlCommand對象

cmd.CommandType = CommandType.Text;

cmd.CommandText = "select * from products = @ID";? //sql語句

cmd.Parameters.Add("@ID", SqlDbType.Int);

cmd.Parameters["@ID"].Value = 1;? ? ? ? ? ? ? ? ? ? //給參數(shù)sql語句的參數(shù)賦值

② 調(diào)用存儲過程

SqlCommand cmd = conn.CreateCommand();

cmd.CommandType = System.Data.CommandType.StoredProcedure;

cmd.CommandText = "存儲過程名";

③ 整張表

SqlCommand cmd = conn.CreateCommand();

cmd.CommandType = System.Data.CommandType.TableDirect;

cmd.CommandText = "表名"

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末撰茎,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子打洼,更是在濱河造成了極大的恐慌龄糊,老刑警劉巖逆粹,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異炫惩,居然都是意外死亡僻弹,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進店門他嚷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蹋绽,“玉大人,你說我怎么就攤上這事爸舒◇郑” “怎么了稿蹲?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵扭勉,是天一觀的道長。 經(jīng)常有香客問我苛聘,道長涂炎,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任设哗,我火速辦了婚禮唱捣,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘网梢。我一直安慰自己震缭,他們只是感情好,可當我...
    茶點故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布战虏。 她就那樣靜靜地躺著拣宰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪烦感。 梳的紋絲不亂的頭發(fā)上巡社,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天,我揣著相機與錄音手趣,去河邊找鬼晌该。 笑死,一個胖子當著我的面吹牛绿渣,可吹牛的內(nèi)容都是我干的朝群。 我是一名探鬼主播,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼中符,長吁一口氣:“原來是場噩夢啊……” “哼潜圃!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起舟茶,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤谭期,失蹤者是張志新(化名)和其女友劉穎堵第,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體隧出,經(jīng)...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡踏志,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了胀瞪。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片针余。...
    茶點故事閱讀 40,561評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖凄诞,靈堂內(nèi)的尸體忽然破棺而出圆雁,到底是詐尸還是另有隱情,我是刑警寧澤帆谍,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布伪朽,位于F島的核電站,受9級特大地震影響汛蝙,放射性物質(zhì)發(fā)生泄漏烈涮。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一窖剑、第九天 我趴在偏房一處隱蔽的房頂上張望坚洽。 院中可真熱鬧,春花似錦西土、人聲如沸讶舰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽跳昼。三九已至,卻和暖如春援所,著一層夾襖步出監(jiān)牢的瞬間庐舟,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工住拭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留挪略,地道東北人。 一個月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓滔岳,卻偏偏與公主長得像杠娱,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子谱煤,可洞房花燭夜當晚...
    茶點故事閱讀 45,573評論 2 359

推薦閱讀更多精彩內(nèi)容