c# 获取ListView数值,添加到数据库出错!

foreach(ListViewItemlvIteminlistView1.CheckedItems)//拿出所选择的项添加到数据库{OleDbConnectiondbc... foreach (ListViewItem lvItem in listView1.CheckedItems)//拿出所选择的项添加到数据库
{

OleDbConnection dbconn3 = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data source=\\192.168.1.103\data\ntgj.mdb");
// string sql3 = "insert into [pinglu] (卡号,[扣除积分],[兑换奖品]) values ('" + number.Text.Trim() + "'," + Convert.ToInt32(lvItem.SubItems[0].Text) + ",'" + lvItem.Text + "','" + DateTime.Now + "')";
// string sql3 = "insert into [pinglu] (卡号,[扣除积分],[兑换奖品],[兑换日期]) values ('" + number.Text.Trim() + "','" + Convert.ToInt32(lvItem.SubItems[0].Text) + "','" + lvItem.Text + "','" + DateTime.Now + "')";
string sql3 = "insert into [pinglu] (卡号,[扣除积分],[兑换奖品],[兑换日期]) values ('" + number.Text.Trim() + "','" + Convert.ToInt32(lvItem.SubItems[0].Text) + "','" + lvItem.Text + "','" + DateTime.Now + "')";

OleDbCommand cmd3 = new OleDbCommand();
cmd3.Connection = dbconn3;
cmd3.CommandText = sql3;
dbconn3.Open();//打开连接

cmd3.ExecuteNonQuery();
cmd3.Dispose();
dbconn3.Close();
dbconn3.Dispose();

MessageBox.Show("积分兑换成功!", "广济刷卡系统");

---------------------------------
数据已能从listView里面取出来了,但就是在添加到那外一张表里的时候,就出错了,提示:
Input string was not in a correct format.

将一个字符串转换为“datetime”时,先分析该字符以获取的日期,然后再将每个变量放置到datetime对象中
在线等求解~~~~~~~~~~~~~~~~~~~~~~~~
具体不知道,问题出在哪儿~~~~~~~~~~
展开
 我来答
yyhian
2009-03-08 · TA获得超过590个赞
知道小有建树答主
回答量:134
采纳率:0%
帮助的人:206万
展开全部
回答你这个问题我先作个假设。假设你表里面的字段:卡号为nchar类型,扣除积分为int类型,兑换商品为nchar类型,兑换日期为datetime类型。

所以你的sql3的语中
{
values ('" + number.Text.Trim() + "','" + Convert.ToInt32(lvItem.SubItems[0].Text) + "','" + lvItem.Text + "','" + DateTime.Now + "')";
}
第二个值的两边不应该有“'”号,因为有了这个符号就成字符型了,这样你Convert转换还家什么意义?同理第四个值的两边也不应该有“'”。所以这条sql语句应该改为
{
string sql3 = "insert into [pinglu] (卡号,[扣除积分],[兑换奖品],[兑换日期]) values ('" + number.Text.Trim() + "'," + Convert.ToInt32(lvItem.SubItems[0].Text) + ",'" + lvItem.Text + "'," + DateTime.Now + ")";
}

如果你把这条SQL语句参数化的话完全可以避免这个问题的发生。我再改一下:
{
string sql3 = "insert into [pinglu] (卡号,[扣除积分],[兑换奖品],[兑换日期]) values ('@number',@point,'@merchandise',@date)";

Parameter[] paras = new Parameter[]{
new Parameter(@number,number.Text.Trim()),
new Parameter(@point,Convert.ToInt32(lvItem.SubItems[0].Text)),
new Parameter(@merchandise,lvItem.Text),
new Parameter(@date,DateTime.Now)
}
//这里的Parameter的类名根据数据库的类型选则相应的类名,如SQL数据库为
//SqlParameter

cmd3.Parameters.AddRange(paras);
}

其它的不变,就是把那些从表里面取来的值作为参数传进去,而且这样操作数据库会比较安全。
百度网友586e433
2009-03-08 · TA获得超过3491个赞
知道小有建树答主
回答量:1221
采纳率:0%
帮助的人:1424万
展开全部
日期字符串格式的问题,贴上几个样例日期看看
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kaoqiangshao
2009-03-08 · TA获得超过304个赞
知道小有建树答主
回答量:206
采纳率:0%
帮助的人:237万
展开全部
是去Lisview 哪个数据?
你这个用for 循环来实现吧
for (int i=0;i<this.istView1.selectItems.count;i++)
{

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
202261256487e6a
2009-03-08 · TA获得超过481个赞
知道小有建树答主
回答量:795
采纳率:0%
帮助的人:691万
展开全部
是不是字段类型不符?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式