国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 數(shù)據(jù)庫(kù) > SQL Server > 正文

SQL Server數(shù)據(jù)庫(kù)的操作流程和連接的簡(jiǎn)單介紹

2024-08-31 00:55:32
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
SQL Server數(shù)據(jù)庫(kù)的操作流程和連接的簡(jiǎn)單介紹

學(xué)習(xí)ADO,免不了要跟數(shù)據(jù)庫(kù)打交道,對(duì)于初學(xué)者來(lái)說(shuō),如果不整理一下整個(gè)流程,那么可能會(huì)出現(xiàn)很多的問(wèn)題,下面簡(jiǎn)單的介紹數(shù)據(jù)庫(kù)的操作流程。

1. 我們最終操作的對(duì)像是數(shù)據(jù)表,在操作數(shù)據(jù)表之前我們先要明確我們要操作的數(shù)據(jù)庫(kù),因?yàn)橹挥邢冗B接了數(shù)據(jù)庫(kù)才能進(jìn)入數(shù)據(jù)庫(kù)操作里面存儲(chǔ)的表。

所以才有以下連接數(shù)據(jù)庫(kù)的代碼:

string connString = "Data Source=.;Initial Catalog=MySchool;Integrated Security=True";

server=./sqlexPRess; database=myschool;User id=sa; Pwd=***** --數(shù)據(jù)庫(kù)連接字符串

server=./sqlexpress; database=myschool;Uid=sa; passWord=*****

數(shù)據(jù)庫(kù)連接 Connection 對(duì)象,連接通道

SqlConnection connection = new SqlConnection(connString);

數(shù)據(jù)庫(kù)連接建立后需要將連接打開(kāi)才能真正實(shí)現(xiàn)數(shù)據(jù)庫(kù)的連接,否則連接語(yǔ)句僅僅是一個(gè)語(yǔ)句而已,不能起到任何作用。所以才需要以下代碼:

connection.Open(); --打開(kāi)連接

2. 當(dāng)我們成功連接上數(shù)據(jù)庫(kù)之后我們需要做什么事情呢?

我們知道,操作數(shù)據(jù)庫(kù)可以使用SQL語(yǔ)句,SQL語(yǔ)句就是用來(lái)做數(shù)據(jù)庫(kù)的增加,刪除,修改,查詢操作的。所以我們需要定義一個(gè)SQL語(yǔ)句告訴電腦應(yīng)該做什么樣的事情。所以才有以下語(yǔ)句:如

string sql = string.Format("SELECT count(*) FROM Admin WHERE LogInId='{0}' AND LogInPwd='{1}'", loginId, loginPwd ); ExcuteScalar ExcuteNonQuery()

if(num!=0)

{

}

3. 當(dāng)我成功連接上數(shù)據(jù)庫(kù),也寫好的SQL語(yǔ)句就行了嗎?

當(dāng)然不行,因?yàn)槲覀內(nèi)绻蝗?zhí)行SQL語(yǔ)句,那它也僅僅是一個(gè)語(yǔ)句而已,就像我們?cè)?/strong>SQL SERVER里面寫了SQL語(yǔ)句而不是去執(zhí)行一下不能起到任何作用。所以我們需要一個(gè)命令對(duì)像來(lái)“執(zhí)行”SQL語(yǔ)句,這個(gè)命令對(duì)像就是SqlCommand對(duì)像,它是一個(gè)系統(tǒng)對(duì)像,我們要使用它必須先實(shí)例化出一個(gè)新的對(duì)像,所以才有以下代碼:

SqlCommand command = new SqlCommand(sql, connection);//command是實(shí)例化對(duì)像的名稱,sql是說(shuō)明需要執(zhí)行的SQL語(yǔ)句, connection是說(shuō)明如何連接數(shù)據(jù)庫(kù)

Command.CommandText=sql;

Command.Connection=connection;

4.有了command對(duì)像還不夠了,因?yàn)樗矁H僅是一個(gè)對(duì)像,要它起作用還需要調(diào)用它的相應(yīng)的方法,就是“對(duì)像.方法”。具體方法如下:

A:如果是要做查詢,就是說(shuō)找到我想得到具體的數(shù)據(jù)的值(不是符合條件的個(gè)數(shù),不是聚合函數(shù),也不是單個(gè)值),那就使用SqlCommandExecuteReader()方法返回一個(gè)SqlDataReader對(duì)象,這個(gè)對(duì)象的Read()方法一次可以返回一行的值,這一行的值由SQL語(yǔ)句的select來(lái)決定,select后面查詢的字段越多,那么這個(gè)方法得到的值就越多,也就是說(shuō)返回的這一行的數(shù)據(jù)就越多!

B:如果對(duì)數(shù)據(jù)做增加,刪除,修改,那就要調(diào)用SqlCommandExecuteNonQuery()方法,這個(gè)方法可以執(zhí)行某個(gè)操作,同時(shí)返回受影響和行數(shù)。到底什么操作呢?這和你的SQL語(yǔ)句是有關(guān)的。SQL語(yǔ)句寫了增加,那它就執(zhí)行增加。如果寫了刪除,那它就執(zhí)行刪除。如果不是增加刪除和修改就返回-1

C:如果只是返回滿足條件的個(gè)數(shù)或者返回第一行第一列的值,那一般就會(huì)使用SqlCommandExecuteScalar()方法,例如SQL語(yǔ)句里面寫了聚合函數(shù)等。它的返回類型是object,需要做強(qiáng)制類型轉(zhuǎn)換,因?yàn)橛锌赡軐?/strong>object轉(zhuǎn)換為其它類型,所以一般使用Convert進(jìn)行轉(zhuǎn)換。(數(shù)據(jù)庫(kù)中的所有數(shù)據(jù)都是值類型,所以讀取過(guò)來(lái)后需要做裝箱,在做拆箱只能拆到原始的數(shù)據(jù)類型

5.那么我們?nèi)绾沃肋@個(gè)操作被成功的執(zhí)行了呢?

這個(gè)時(shí)候我們需要方法給我們返回相應(yīng)的值,ExecuteScalar()返回單個(gè)值,如聚合函數(shù)或者單列的一個(gè)值,這個(gè)值的類型是object,需要做強(qiáng)制的類型轉(zhuǎn)換,ExecuteNonQuery()返回受影響的行數(shù),它們都可以是一個(gè)整型值,所以我們經(jīng)常看到這樣的代碼:

count = (int)command.ExecuteScalar(); ---執(zhí)行查詢語(yǔ)句

但是ExecuteReader()返回多個(gè)值,所以我們需要使用循環(huán)去做接收,一般是將讀取出來(lái)的值賦給相應(yīng)的字符串變量,或者放到相關(guān)控件里面做顯示,所以我們可能看到這樣的代碼:

while (dataReader.Read())

{

gradeName = (string)dataReader[0]; --將值賦值給一個(gè)變量

}

6.對(duì)于ExecuteScalar()和ExecuteNonQuery()接下來(lái)我們就可以對(duì)方法返回的值做一個(gè)判斷了,所以經(jīng)常看到這樣的代碼:

if (result== 1) @@rowcount

{

MessageBox.Show("添加成功!”);

}

else

{

MessageBox.Show("添加失敗!");

}

7、還有平時(shí)我們經(jīng)常會(huì)接觸都應(yīng)用程序跟數(shù)據(jù)庫(kù)進(jìn)行交換,那么我們可以用一個(gè)簡(jiǎn)單的圖來(lái)說(shuō)明應(yīng)用程序是怎么跟數(shù)據(jù)庫(kù)打交道的:

以上的圖清晰的展示了五大對(duì)象各施其職和他們之間的關(guān)系,如果有什么問(wèn)題可以聯(lián)系我!


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 新乐市| 龙江县| 惠水县| 泾源县| 广南县| 寿阳县| 平南县| 松滋市| 收藏| 北票市| 和静县| 雅江县| 蛟河市| 盐山县| 乳山市| 游戏| 华蓥市| 舟山市| 通城县| 新邵县| 通许县| 平原县| 通化县| 浦县| 济阳县| 和顺县| 偃师市| 成都市| 新乐市| 南通市| 观塘区| 东辽县| 灵丘县| 年辖:市辖区| 雅安市| 太白县| 务川| 黄山市| 琼结县| 闽清县| 成都市|