由于该类太大!我放到网站上了:http://www.w8le.com/lkfup/ado.htm
//由于 DbParameter 是虚拟类 不允许实例化,我这里想到的是用 SqlParameter 来传递(SqlParameter 是继承了DbParameter的) //可是这样又觉得辜负了该类可以自动判断数据库类型的功能,觉得应该用 //db.CreateParameter()方法来创建参数, //可是没研究明白! Providers.DataAccess db = new Providers.DataAccess("lkfCon"); string sql = "insert into Tab_User(name,age) output inserted.id values(@name,@age)"; SqlParameter[] prams = { new SqlParameter("@name", model.Name), new SqlParameter("@age", model.Age) }; object o = db.ExecuteScalar(sql,prams);
我的水平有限,最好能写个例子
我想这么写
Providers.DataAccess db = new Providers.DataAccess("lkfCon"); string sql = "insert into Tab_User(name,age) output inserted.id values(@name,@age)"; DbParameter[] prams = { db.CreateParameter("@name","" model.Name), db.CreateParamete("@age", "",model.Age) }; object o = db.ExecuteScalar(sql,prams);
我也曾经想过这样写,不过看到源码
public DbParameter CreateParameter(string field, string dbtype, string value)
{
................
}
value 只是个 string类型,不知道向里面传其他类型的参数会不会有问题呢?
既然想到了CREATEPARAMETER,干吗不这样用?
CREATEPARAMETER是DBCOMMAND的一个方法,这个数据库访问类提供一个createdbcommand的方法。
本来就应该传SqlParameter啊。IOC的概念看下,中间层让类型无关,并不是说使用层也要让类型无关。不然程序就没法写了