1.使用ExecuteReader()操作數(shù)據(jù)庫
2.使用ExecuteNonQuery()操作數(shù)據(jù)庫
3.使用ExecuteScalar()操作數(shù)據(jù)庫
4.使用DataSet數(shù)據(jù)集插入記錄,更新數(shù)據(jù)
一、使用ExecuteReader()操作數(shù)據(jù)庫,執(zhí)行查詢操作的非常好的方法。
ExecuteReader比DataSet而言,DataReader具有較快的訪問能力,并且能夠使用較少的服務(wù)器資源。DataReader對(duì)象提供了游標(biāo)形式的讀取方式,當(dāng)從結(jié)果行中讀取了一行,則游標(biāo)會(huì)繼續(xù)讀取到下一行。通過read方法可以判斷數(shù)據(jù)是否還有下一行,如果存在數(shù)據(jù),則繼續(xù)運(yùn)行返回true,如果沒有數(shù)據(jù),則返回false。DataReader可以提高執(zhí)行效率,基于序號(hào)的查詢可以使用DataReader。使用ExecuteReader()操作數(shù)據(jù)庫,通常情況下是使用ExecuteReader()進(jìn)行數(shù)據(jù)查詢操作,使用ExecuteReader()查詢數(shù)據(jù)能夠提升查詢效率,而如果需要進(jìn)行數(shù)據(jù)庫事務(wù)處理的話,ExecuteReader()并不是一個(gè)理想的選擇。
二、使用ExecuteNonQuery(),ExecuteScalar()操作數(shù)據(jù)庫,執(zhí)行增刪改操作的利器
ExecuteNonQuery()通常情況下為數(shù)據(jù)庫事務(wù)處理的首選,當(dāng)需要執(zhí)行插入,刪除,修改等操作時(shí),首選ExecuteNonQuery(),ExecuteNonQuery()執(zhí)行成功返回的是一受影響的行數(shù),對(duì)于"Create Table"和"Drop Table"語句,返回值是0,而對(duì)于其他類型的語句,返回值是-1,ExecuteNonQuery()操作數(shù)據(jù)時(shí),可以不使用DataSet直接更改數(shù)據(jù)庫中的數(shù)據(jù)。
ExecuteScalar()方法也可以用來執(zhí)行SQL語句,但是executescalar()執(zhí)行SQL語句后返回值與ExecuteNonQuery()并不相同,executescalar()方法的返回值的數(shù)據(jù)類型是object,如果執(zhí)行的SQL語句是查詢語句,則返回結(jié)果是查詢后的第一行第一列,如果執(zhí)行的SQL語句不是一個(gè)查詢語句,則會(huì)返回一個(gè)未實(shí)例化的對(duì)象,必須通過類型裝換來顯示。
一般情況下,ExecuteNonQuery()操作后返回的是一個(gè)值,而executescalar()操作后則會(huì)返回一個(gè)對(duì)象,executescalar()經(jīng)常使用當(dāng)需要返回單一值時(shí)的情況。例如當(dāng)插入一條數(shù)據(jù)信息時(shí),需要馬上知道剛才插入的值,則可以使用executescalar()方法。
三、使用DataSet數(shù)據(jù)集插入記錄,更新數(shù)據(jù)
使用insert語句能夠完成數(shù)據(jù),使用dataset對(duì)象也可以完成數(shù)據(jù)插入。為了將數(shù)據(jù)庫的數(shù)據(jù)填充到dataset中,則必須先使用adapter對(duì)象的方法實(shí)現(xiàn)填充,當(dāng)數(shù)據(jù)填充完成后,開發(fā)人員可以將記錄添加到dataset對(duì)象中,然后使用update方法將數(shù)據(jù)插入到數(shù)據(jù)庫中。