我想问的原因是,origionally所有引用和实例对方法2C#数据库访问:最好的方法用于获取数据
指出,但方法1似乎少了这么多的代码做这么多。当然它的
- 整洁,
- 更好
- 更易于阅读/遵循
- 和具有的功能,如转换DBNulls为null。而不是让自己做 。
- 处理连接/数据读取器的打开和关闭。
我不能用以上方法想不出什么原因2种方法1.
(方法2很可能有使用条款,但由于这么多的代码,它被放置在一个单独的功能是因此关闭数据记录器使得数据不可访问)。
无论如何,我认真考虑回去并改变我的整个webservice以使用方法1,因为它看起来好多了,可以维护。任何人都可以建议吗?
方法1:
using (var db = Database.OpenConnectionString(Library.Properties.Settings.Default.dbConnString, "System.Data.SqlClient"))
{
Int32 AccNo = db.QuerySingle("SELECT AccNo FROM Tasks WHERE TaskID = " + TaskID);
}
方法2:
sqlComm = new SqlCommand();
sqlCon = new SqlConnection();
sqlComm.Connection = sqlCon;
sqlCon.ConnectionString = global::Library.Properties.Settings.Default.dbConnString;
sqlComm.CommandText = "SELECT AccNo FROM Tasks WHERE TaskID = " + TaskID;
sqlCon.Open();
SqlDataReader data = sqlComm.ExecuteReader();
while (data.Read())
{
Int32 AccNo = (Int32)data["AccNo"];
}
sqlCon.Close();
sqlComm.Dispose();
if (data != null)
data.Close();
对于这两种方法,我建议使用参数与你的SqlCommand。 – 2011-12-19 10:56:08
为了防止sql攻击?我会考虑它:) – Doomsknight 2011-12-19 10:58:03
顺便说一句:SqlCommand也有一个'ExecuteScalar'方法,以获得一个单一的值。 – 2011-12-19 11:02:23