日期:2014-05-18  浏览次数:20712 次

我得到一个微软mvp写的一个数据库访问类,不知道如何传递 参数?!
由于该类太大!我放到网站上了:http://www.w8le.com/lkfup/ado.htm

C# code

            //由于 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);



------解决方案--------------------
各数据库的数据类型都不一样,没法统一,如果够智能,它从构造函数的连接字符串中推导出数据库类型,CreateParameter 创建的就是 SqlParameter,你也可以断点监视下类型,另外大部分的数据类型都不用指定,数据库服务执行时能推导出,CreateParameter 返回的实例赋下 name 和 value 就行了,少部分比如字节数组,就自己创建下了,特事特办。