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对象中
在线等求解~~~~~~~~~~~~~~~~~~~~~~~~
具体不知道,问题出在哪儿~~~~~~~~~~ 展开
{
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对象中
在线等求解~~~~~~~~~~~~~~~~~~~~~~~~
具体不知道,问题出在哪儿~~~~~~~~~~ 展开
4个回答
展开全部
回答你这个问题我先作个假设。假设你表里面的字段:卡号为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);
}
其它的不变,就是把那些从表里面取来的值作为参数传进去,而且这样操作数据库会比较安全。
所以你的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);
}
其它的不变,就是把那些从表里面取来的值作为参数传进去,而且这样操作数据库会比较安全。
展开全部
日期字符串格式的问题,贴上几个样例日期看看
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是去Lisview 哪个数据?
你这个用for 循环来实现吧
for (int i=0;i<this.istView1.selectItems.count;i++)
{
}
你这个用for 循环来实现吧
for (int i=0;i<this.istView1.selectItems.count;i++)
{
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是不是字段类型不符?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询