【发布时间】:2012-12-30 08:10:08
【问题描述】:
我想问你如何在更新表格或将数据插入表格之前,用户插入一行之后,或从dataGridView更新一行时将字符串转换为小数。
例如,我把一个十进制值2.2放到价格列,然后我把它保存到数据库,然后我刷新表,值是2,而不是@ 987654323@,或者添加2.8,那么表格显示的是3,而不是2.8。
在我的情况下,我希望价格列是十进制的,我这样做如下,但它不起作用,请帮助,谢谢。
在form1.css中:
..............
//after a user click the save button
private void btnSave_Click(object sender, EventArgs e)
{
Infor.UpdateDataSet((DataSet)dataGridView1.DataSource);
}
.........
Infor.css
pInsert[3] = new SqlParameter("@p4", SqlDbType.Decimal, 40,
"price");
pUpdate[2] = new SqlParameter("@p4", SqlDbType.Decimal, 40,
"price");
…………
public static void UpdateDataSet(DataSet ds)
{
SqlConnection cnn = new SqlConnection(strConn);
string sqlInsert, sqlUpdate, sqlDelete;
sqlInsert = "insert into customers(customerid,companyname,
contactname,price) values(@p1,@p2,@p3,@p4)";
sqlUpdate = "update customers set companyname=@p2,
contactname=@p3,price=@p4 where customerid=@p1";
sqlDelete = "delete from customers where customerid=@p1";
SqlParameter[] pInsert = new SqlParameter[4];
SqlParameter[] pUpdate = new SqlParameter[4];
SqlParameter[] pDelete = new SqlParameter[1];
pInsert[0] = new SqlParameter("@p1", SqlDbType.VarChar, 5,
"CustomerID");
pInsert[1] = new SqlParameter("@p2", SqlDbType.VarChar, 40,
"CompanyName");
pInsert[2] = new SqlParameter("@p3", SqlDbType.VarChar, 40,
"ContactName");
pInsert[3] = new SqlParameter("@p4", SqlDbType.Decimal, 40,
"price");
pUpdate[0] = new SqlParameter("@p2", SqlDbType.VarChar, 40,
"CompanyName");
pUpdate[1] = new SqlParameter("@p3", SqlDbType.VarChar, 40,
"ContactName");
pUpdate[2] = new SqlParameter("@p4", SqlDbType.Decimal, 40,
"price");
pUpdate[3] = new SqlParameter("@p1", SqlDbType.VarChar, 5,
"CustomerID");
pDelete[0] = new SqlParameter("@p1", SqlDbType.VarChar, 5,
"CustomerID");
SqlCommand cmdInsert = new SqlCommand(sqlInsert,cnn);
SqlCommand cmdUpdate = new SqlCommand(sqlUpdate,cnn);
SqlCommand cmdDelete = new SqlCommand(sqlDelete,cnn);
cmdInsert.Parameters.AddRange(pInsert);
cmdUpdate.Parameters.AddRange(pUpdate);
cmdDelete.Parameters.AddRange(pDelete);
SqlDataAdapter da = new SqlDataAdapter();
da.InsertCommand = cmdInsert;
da.UpdateCommand = cmdUpdate;
da.DeleteCommand = cmdDelete;
da.Update(ds, "customers");
ds.AcceptChanges();
}
【问题讨论】:
-
不客气。另外,由于您是 StackOverflow 的新手,我想通知您,您可以通过勾选答案旁边的勾号来为好的答案投票并接受对您帮助最大的答案。在本网站上,点赞或接受的答案都算作“感谢”。