學習ADO,免不了要跟數據庫打交道,對于初學者來說,如果不整理一下整個流程,那么可能會出現很多的問題,下面簡單的介紹數據庫的操作流程。
1. 我們最終操作的對像是數據表,在操作數據表之前我們先要明確我們要操作的數據庫,因為只有先連接了數據庫才能進入數據庫操作里面存儲的表。
所以才有以下連接數據庫的代碼:
string connString = "Data Source=.;Initial Catalog=MySchool;Integrated Security=True";
server=./sqlexPRess; database=myschool;User id=sa; Pwd=***** --數據庫連接字符串
server=./sqlexpress; database=myschool;Uid=sa; passWord=*****
數據庫連接 Connection 對象,連接通道
SqlConnection connection = new SqlConnection(connString);
數據庫連接建立后需要將連接打開才能真正實現數據庫的連接,否則連接語句僅僅是一個語句而已,不能起到任何作用。所以才需要以下代碼:
connection.Open(); --打開連接
2. 當我們成功連接上數據庫之后我們需要做什么事情呢?
我們知道,操作數據庫可以使用SQL語句,SQL語句就是用來做數據庫的增加,刪除,修改,查詢操作的。所以我們需要定義一個SQL語句告訴電腦應該做什么樣的事情。所以才有以下語句:如
string sql = string.Format("SELECT count(*) FROM Admin WHERE LogInId='{0}' AND LogInPwd='{1}'", loginId, loginPwd ); ExcuteScalar ExcuteNonQuery()
if(num!=0)
{
}
3. 當我成功連接上數據庫,也寫好的SQL語句就行了嗎?
當然不行,因為我們如果不去執行SQL語句,那它也僅僅是一個語句而已,就像我們在SQL SERVER里面寫了SQL語句而不是去執行一下不能起到任何作用。所以我們需要一個命令對像來“執行”SQL語句,這個命令對像就是SqlCommand對像,它是一個系統對像,我們要使用它必須先實例化出一個新的對像,所以才有以下代碼:
SqlCommand command = new SqlCommand(sql, connection);//command是實例化對像的名稱,sql是說明需要執行的SQL語句, connection是說明如何連接數據庫
Command.CommandText=sql;
Command.Connection=connection;
4.有了command對像還不夠了,因為他也僅僅是一個對像,要它起作用還需要調用它的相應的方法,就是“對像.方法”。具體方法如下:
A:如果是要做查詢,就是說找到我想得到具體的數據的值(不是符合條件的個數,不是聚合函數,也不是單個值),那就使用SqlCommand的ExecuteReader()方法返回一個SqlDataReader對象,這個對象的Read()方法一次可以返回一行的值,這一行的值由SQL語句的select來決定,select后面查詢的字段越多,那么這個方法得到的值就越多,也就是說返回的這一行的數據就越多!
B:如果對數據做增加,刪除,修改,那就要調用SqlCommand的ExecuteNonQuery()方法,這個方法可以執行某個操作,同時返回受影響和行數。到底什么操作呢?這和你的SQL語句是有關的。SQL語句寫了增加,那它就執行增加。如果寫了刪除,那它就執行刪除。如果不是增加刪除和修改就返回-1
C:如果只是返回滿足條件的個數或者返回第一行第一列的值,那一般就會使用SqlCommand的ExecuteScalar()方法,例如SQL語句里面寫了聚合函數等。它的返回類型是object,需要做強制類型轉換,因為有可能將object轉換為其它類型,所以一般使用Convert進行轉換。(數據庫中的所有數據都是值類型,所以讀取過來后需要做裝箱,在做拆箱只能拆到原始的數據類型)
5.那么我們如何知道這個操作被成功的執行了呢?
這個時候我們需要方法給我們返回相應的值,ExecuteScalar()返回單個值,如聚合函數或者單列的一個值,這個值的類型是object,需要做強制的類型轉換,ExecuteNonQuery()返回受影響的行數,它們都可以是一個整型值,所以我們經??吹竭@樣的代碼:
count = (int)command.ExecuteScalar(); ---執行查詢語句
但是ExecuteReader()返回多個值,所以我們需要使用循環去做接收,一般是將讀取出來的值賦給相應的字符串變量,或者放到相關控件里面做顯示,所以我們可能看到這樣的代碼:
while (dataReader.Read())
{
gradeName = (string)dataReader[0]; --將值賦值給一個變量
}
6.對于ExecuteScalar()和ExecuteNonQuery()接下來我們就可以對方法返回的值做一個判斷了,所以經??吹竭@樣的代碼:
if (result== 1) @@rowcount
{
MessageBox.Show("添加成功!”);
}
else
{
MessageBox.Show("添加失??!");
}
7、還有平時我們經常會接觸都應用程序跟數據庫進行交換,那么我們可以用一個簡單的圖來說明應用程序是怎么跟數據庫打交道的:
以上的圖清晰的展示了五大對象各施其職和他們之間的關系,如果有什么問題可以聯系我!
新聞熱點
疑難解答