关于getvalue,getstring的问题

raziellove 2013-05-02 01:35:36
现在写了段代码,但是现在运行的时候总是在这一块出问题,现在又修改成了如下状况,但是在”DateMonth = dr.GetString(3);“这句错误是:“无法将System.Double强制转换为System.String"
,我该怎么改呢?
以下是我的代码:
private void getGoods()
{
DateMonth=textBox1.Text;
SqlConnection cn = new SqlConnection(Properties.Settings.Default.CSConnectionString);

string sql = "SELECT ID,DateMonth,SUM(GoodsAmount)AS GoodsAmount,SUM(Money) AS Money FROM GoodsOrder2 WHERE DateMonth like '%" + DateMonth + "%' GROUP BY ID,DateMonth ORDER BY Money";

SqlCommand com = new SqlCommand(sql, cn);
cn.Open();
SqlDataReader dr = com.ExecuteReader();
dr.Read();
ID = dr.GetString(1);
DateMonth = dr.GetString(3);
GoodsAmount = dr.GetInt32(1);
Money = dr.GetFloat(2);//括号里的1,2,3我是按照在datagridview中显示出来的列额的顺序写的,不知道对不对,求指点

cn.Close();
}
ID,DateMonth是public string,GoodsAmount是public int;Money是public float;
然后表GoodsOrder里的列是:
OrderID nvarchar
ID (同上)
GoodsName (同上)
UnitPrice float
GoodsAmount int
Money float
DateMonth nvarchar
...全文
145 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
egojit8 2013-05-03
  • 打赏
  • 举报
回复
你能把月份那个字段也加上去么??否则我什么都看不到
raziellove 2013-05-02
  • 打赏
  • 举报
回复
引用 5 楼 egojit 的回复:
那你应该这样获取Money=dr.GetFloat(3)而不能用GetString
话说,现在可以取出来信息了,但是现在textbox11中输入4后,只出来了一条002的信息,而且GoodsAmount还是 SUM前的值。。。。是因为没写循环语句的关系么?
egojit8 2013-05-02
  • 打赏
  • 举报
回复
那你应该这样获取Money=dr.GetFloat(3)而不能用GetString
raziellove 2013-05-02
  • 打赏
  • 举报
回复
引用 3 楼 egojit 的回复:
DateMonth = dr.GetString(2);才对啊。你这个查询语句 SELECT ID,DateMonth,SUM(GoodsAmount)AS GoodsAmount,SUM(Money) AS Money FROM GoodsOrder2 WHERE DateMonth like '%" + DateMonth + "%' GROUP BY ID,DateMonth ORDER BY Money"; DateMonth字段在第二位啊。
恩恩,刚刚也发现了,然后改了下,ID对应的是0,dateMonth是1,GoodsAmount是2,Money是3,但是现在运行后Money那块显示错误是:指定的转换无效。表里的数据是float型啊。。。而且我也声明了public float Money.....这是个什么状况呢?
egojit8 2013-05-02
  • 打赏
  • 举报
回复
DateMonth = dr.GetString(2);才对啊。你这个查询语句 SELECT ID,DateMonth,SUM(GoodsAmount)AS GoodsAmount,SUM(Money) AS Money FROM GoodsOrder2 WHERE DateMonth like '%" + DateMonth + "%' GROUP BY ID,DateMonth ORDER BY Money"; DateMonth字段在第二位啊。
raziellove 2013-05-02
  • 打赏
  • 举报
回复
引用 1 楼 caozhy 的回复:
DateMonth = dr.GetString(6);
改成这个了后,显示“索引超出界限”。。。。
raziellove 2013-05-02
  • 打赏
  • 举报
回复
引用 9 楼 egojit 的回复:
用这种查询方式SELECT ……GROUP BY……having……
刚刚又去看了下数据库里的那张表,发现那个是对的....那个编号4月份就只有那一条记录。。。。所以现在存在的问题是: 表中是 ID 数量 金额 001 3 6 002 4 2.8 002 3 2.1 然后在SQL里面是查询结果OK,但是最后显示的时候只能显示出001的,002的却不能显示出来。。。
egojit8 2013-05-02
  • 打赏
  • 举报
回复
用这种查询方式SELECT ……GROUP BY……having……
raziellove 2013-05-02
  • 打赏
  • 举报
回复
引用 7 楼 egojit 的回复:
我不知道你的textbox11是什么??能将问题描述清楚一点么??
是这样的,在textbox1中输入月份,然后回车后,显示那个月所有的商品销售信息,同时按照商品ID进行总和,计算每个商品的总的GoodsAmount和总的Money。查询用到的那张表上,大致是这样: ID GoodsAmount Money 001 3 6 002 4 6 001 2 4 然后结果应该是: 001 5 10 002 4 6 但是现在显示出来的是: 001 3 6.。。。。。
egojit8 2013-05-02
  • 打赏
  • 举报
回复
我不知道你的textbox11是什么??能将问题描述清楚一点么??
threenewbee 2013-05-02
  • 打赏
  • 举报
回复
DateMonth = dr.GetString(6);

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧