C# 中 DataSet 赋值问题 速急!!!!!
---------------------------------------------表Lessonidnamesexagetype1张三111812张三222323...
---------------------------------------------
表 Lesson
id name sex age type
1 张三1 1 18 1
2 张三2 2 23 2
3 张三3 1 16 1
4 张三4 2 18 3
5 张三5 1 25 3
6 张三6 1 18 2
---------------------------------------------
问题: 我从数据库中查询到数据集DataSet
DataSet ds = DbHelperSQL.Query("Select * from Lesson") ;
需要给ds中的常量 重新赋值 数据类型错误
for (int i = 0; i < ds.Tables[0].Rows.Count;i++ )
{
string val= ds.Tables[0].Rows[i]["type"].ToString();
if(val==“1”){
ds.Tables[0].Rows[i]["type"] = “优等生”;
}else if(val==“2”){
ds.Tables[0].Rows[i]["type"] = “中等生”;
}else if(val==”3“){
ds.Tables[0].Rows[i]["type"] = “下等生”;
}
}
此处报错:输入字符串的格式不正确。不能在 type列中存储 <优等生>。所需类型是 Int32。
为什么会报错呀,主要是如何解决 赋值不上 。。。 ?在线等 展开
表 Lesson
id name sex age type
1 张三1 1 18 1
2 张三2 2 23 2
3 张三3 1 16 1
4 张三4 2 18 3
5 张三5 1 25 3
6 张三6 1 18 2
---------------------------------------------
问题: 我从数据库中查询到数据集DataSet
DataSet ds = DbHelperSQL.Query("Select * from Lesson") ;
需要给ds中的常量 重新赋值 数据类型错误
for (int i = 0; i < ds.Tables[0].Rows.Count;i++ )
{
string val= ds.Tables[0].Rows[i]["type"].ToString();
if(val==“1”){
ds.Tables[0].Rows[i]["type"] = “优等生”;
}else if(val==“2”){
ds.Tables[0].Rows[i]["type"] = “中等生”;
}else if(val==”3“){
ds.Tables[0].Rows[i]["type"] = “下等生”;
}
}
此处报错:输入字符串的格式不正确。不能在 type列中存储 <优等生>。所需类型是 Int32。
为什么会报错呀,主要是如何解决 赋值不上 。。。 ?在线等 展开
2个回答
展开全部
因为原来的值为int32的,所以赋值时还必须是int32的。
可以考虑增加一列string类型的,将string存在该列中。
不过建议由SQL语句完成
select * from Lesson
改为:
select *, strType= (case type when 1 then "优等生" when 2 then "中等生" else "下等生" end) from Lesson
执行完这句时,你可以在ds.table[0]中找到strType列。且已自动转换,没有必须要使用以上的循环语句!
可以考虑增加一列string类型的,将string存在该列中。
不过建议由SQL语句完成
select * from Lesson
改为:
select *, strType= (case type when 1 then "优等生" when 2 then "中等生" else "下等生" end) from Lesson
执行完这句时,你可以在ds.table[0]中找到strType列。且已自动转换,没有必须要使用以上的循环语句!
追问
我想用过 循环来操作,请问能通过在Table[0]中找到"type"列,并改变这列的数据类型,来实现赋值吗?
主要怎么写
追答
只能添加一个新列,或者在绑定事件中处理。
一般优先考虑数据库处理。如果性能上下降太多的情况下,可以考虑使用绑定事件。一般绑定事件处理较为复杂的转换。一般的转换使用数据库即可。
一般只有本地内存表才会使用dataset中进行转换,还有一种特殊情况就是虽然修改不复杂,但是由于对数据性下降较为厉害的情况下,可以考虑dataset进行转换。
但类型的转换一般是在数据库中完成,非要在dataset中完成,你必须添加一个列。
方法是:你先定定义一个string的列,然后增加到dataset.table[0]上,然后再给这个列赋值。
你现在的情况下,你将一个数字转换为字符中直接结数据值列进行赋值虽然是错误的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询