首页 新闻 会员 周边

我得到一个微软mvp写的一个数据库访问类,不知道如何传递 参数?!

0
悬赏园豆:20 [已解决问题] 解决于 2012-06-24 09:17

由于该类太大!我放到网站上了: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类型,不知道向里面传其他类型的参数会不会有问题呢?

钢的锅的主页 钢的锅 | 初学一级 | 园豆:10
提问于:2012-06-14 21:19
< >
分享
最佳答案
0

既然想到了CREATEPARAMETER,干吗不这样用?

CREATEPARAMETER是DBCOMMAND的一个方法,这个数据库访问类提供一个createdbcommand的方法。

收获园豆:20
无之无 | 大侠五级 |园豆:5095 | 2012-06-14 21:34
其他回答(2)
0

本来就应该传SqlParameter啊。IOC的概念看下,中间层让类型无关,并不是说使用层也要让类型无关。不然程序就没法写了

BLoodMaster | 园豆:135 (初学一级) | 2012-06-15 10:22
0

试下另一个MVP的CYQ.Data 数据框架

路过秋天 | 园豆:4787 (老鸟四级) | 2012-06-15 13:09
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册