ADO.NET中SqlCommand对数据库操作
我們要不斷地進(jìn)行數(shù)據(jù)庫的讀寫,那么ExecuteNonQuery(),ExecuteReader()與ExecuteScalar()就是我們在對數(shù)據(jù)庫進(jìn)行操作時要用到的,下面我來依次認(rèn)識一下:
??? ExecuteNonQuery():這個東東可以讓我們在更新數(shù)據(jù)庫時不使用 DataSet 而使用 ExecuteNonQuery 更改數(shù)據(jù)庫中的數(shù)據(jù)。通過執(zhí)行 UPDATE、INSERT 或 DELETE SQL語句就可以達(dá)到更改數(shù)據(jù)庫中的數(shù)據(jù)目的。即使 ExecuteNonQuery 不返回任何行,映射到參數(shù)的輸出參數(shù)或返回值仍然使用數(shù)據(jù)填充。但對于 UPDATE、INSERT 和 DELETE SQL語句,返回的值就是受ExecuteNonQuery()命令影響的行數(shù)。對其它類型的語句以及回退來說,返回的值都是 -1。
?? ExecuteReader():我們通常在asp中用Recordset對象來從數(shù)據(jù)庫中讀出數(shù)據(jù),并且用循環(huán)語句來一個一個的讀出數(shù)據(jù),但在我們的ADO.NET中,我們就是用DataReader 對象的ExecuteReader()方法來進(jìn)行數(shù)據(jù)的列出,并且我們用這個ExecuteReader()方法來顯示數(shù)據(jù)是最快的一種方法,因?yàn)楫?dāng)我們在用ExecuteReader()方法中的DataReader 對象來進(jìn)行數(shù)據(jù)的在網(wǎng)站建設(shè)中顯示時,他只可以一條一條向前讀,不能返回,也就是像ASP中的ADO方法中的Recordset 對象的Movenext一樣,他沒有move -1這樣的返回方法。
??? ExecuteScalar():這種CMD相當(dāng)于我們在ADO中用SQL語句中使用一些計(jì)算函數(shù)的功能一樣,在這里我們只是返回所有影響的行數(shù)的第一行第一列數(shù)據(jù),這樣也就是相當(dāng)于專業(yè)為我們的如:select count(*) from database的功能一樣,我們可以用
| string?sql="select?*?from??database"? SqlCommand?cmd=SqlCommand(sql,conn)? int?i=(int)cmd.ExecuteScalar()? |
這樣我們的局部變更i的值就是與上面我的功能一樣.
??? 最后值得一說的是:這是出自我平時所用的時候的一些認(rèn)識:那就是如果我們在進(jìn)行數(shù)據(jù)操作時,如果沒有數(shù)據(jù)可操作,那么我們只能使用ExecuteReader()這個CMD,而executeNoeQuery()與Executescalar()如果在沒有數(shù)據(jù)的時候使用時,就會出錯“對像沒有實(shí)例化”的錯誤。所以我們在判斷是否有數(shù)據(jù)時,只可以用ExecuteReader()中的REad()方法來檢測。
轉(zhuǎn)載于:https://www.cnblogs.com/wwwzzg168/p/3569006.html
總結(jié)
以上是生活随笔為你收集整理的ADO.NET中SqlCommand对数据库操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: centos6.4修改网卡名
- 下一篇: 网站压力测试工具