求解!!! “不存在从对象类型 System.RuntimeType 到已知的托管提供程序本机类型的映射。”???

publicboolInserts(List<object>rows,stringtblName){SqlConnectioncon=null;SqlTransactio... public bool Inserts(List<object> rows, string tblName)
{
SqlConnection con = null;
SqlTransaction tr = null;
try
{
con = getCon();
con.Open();
tr = con.BeginTransaction();
展开
zhuxinjun1982
2012-05-26 · 知道合伙人互联网行家
zhuxinjun1982
知道合伙人互联网行家
采纳数:2145 获赞数:8329
毕业于上海行健职业学院,大专学历;2007~2009在北大青鸟进修网络编程课目。现任网络主管,平时爱好上网。

向TA提问 私信TA
展开全部
public bool Inserts(List<object> rows, string tblName)
这里改成
public bool Inserts(object rows, string tblName)
然后在下面程序中在将ROWS转成List<object>;
说明下List<object>这里的object是某种类型,而不是object.
泛型的特点就是在<>中定义类型,而避免多余的类型转换。
而你定义了个object?你程序中有这个类吗?而且object应该是关键字,最好别用关键字的名称来定义类,会报错。
你泛型的用法理解了吗?如果不理解,建议你百度搜素下泛型的用法。
我随便举个列子:
如果你程序中有个类,名称为NEWS,那么你想通过泛型来添加NEWS类的数据。
那么List<NEWS> li=new List<NEWS>();li.add(NEWS的对象);
你得把<object>这里改成一个已知对象,或者说是已存在的对象,而不是随意定义个object就行了。
object不是这么用的。。。,你可以将参数的类型设置为object,就象我上面写的那样。
而泛型是不能这么定义的。
追问
就是少写了这行代码:                     foreach (System.Reflection.PropertyInfo p in pt)
{ SqlParameter sp = new SqlParameter("@" + p.Name, p.PropertyType);
sp.Value = p.GetValue(row, null);/////这里没写、真粗心
}
追答
解决就好,看来我对LIST要重新认识了。
照你这么说,那么定义OBJECT是可以的。
OBJECT是任何对象的父类,果然。因为我从来没有用OBJECT类定义过,平时都是定义一个已知的对象。:(
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式