关于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
...全文
151 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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);

111,097

社区成员

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

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

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