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

  • 问题

  •  由于该类太大!我放到网站上了: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);
    我的水平有限,最好能写个例子


    我是半路出家,而且是自学 学的是C#语言,希望回帖的高手们留意一下,谢谢大家的帮助


    • 已编辑 lkf18 2012年6月14日 13:51 补充一下
    2012年6月14日 13:25

答案

全部回复

  • 用该类提供的 CreateParameter 方法来创建参数

    知识改变命运,奋斗成就人生!

    2012年6月14日 14:54
    版主
  •     大哥!!你看我的问题没啊? 我就是没搞懂CreateParameter方法才来提问的啊!!

    我是半路出家,而且是自学 学的是C#语言,希望回帖的高手们留意一下,谢谢大家的帮助

    2012年6月15日 1:29
  • 您好,您不需要实例化DBParameter,CreateParameter方法需要传入参数的名称,类型和值,会自动返回出一个参数。


    Allen Li [MSFT]
    MSDN Community Support | Feedback to us

    2012年6月18日 7:26
    版主
  •  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);
    2012年6月18日 10:52
  •  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); db.CreateParameter("@name","" model.Name),  db.CreateParameter("@name","" model.Name),

    db.CreateParameter("@name","" model.Name),
    我也曾经想过这样写,不过看到源码

            public DbParameter CreateParameter(string field, string dbtype, string value)

            {

                      ................

            }

           value 只是个 string类型,不知道向里面传其他类型的参数会不会有问题呢?


    突然想到一点 是不是 CreateParameter返回的 可能是sqlparameter 也可能是 oledbparameter呢? 这就是 多态吧?



    • 已编辑 lkf18 2012年6月20日 13:37
    2012年6月19日 6:19
  • 你可以把类型改为 object,同时建议你去学习一些 ORM 框架比如微软的 Ado.net Entity Framework

    知识改变命运,奋斗成就人生!

    2012年6月27日 4:55
    版主