各位,
我想将dategridview表中的数据插入mysql。到目前为止,它还可以工作,但是一旦有十进制数,它们就不会作为十进制数存储在mysql中,而是作为整数存储。小数位不被转移。我试图转换数据,但没有成功。它们不存储为十进制数。谢谢你的提示!!!!
这是密码
private void button2_Click(object sender, EventArgs e)
{
for (int i = 0; i < dataGridView1.Rows.Count - 1; i++) // dòng
{
string str = "server=test; database=test; uid=test; pwd=test;";
MySqlConnection constr = new MySqlConnection(str);
constr.Open();
String cmdText = "INSERT INTO KPI_Kosten (Betrag, Tower, Jahr, Periode, Land) VALUES ('"
+ Convert.ToDecimal(dataGridView1.Rows[i].Cells[0].Value) + "','"
+ dataGridView1.Rows[i].Cells[1].Value + "','"
+ dataGridView1.Rows[i].Cells[2].Value + "','"
+ dataGridView1.Rows[i].Cells[3].Value + "','"
+ dataGridView1.Rows[i].Cells[4].Value + "' )";
MySqlCommand cmd = new MySqlCommand(cmdText, constr);
cmd.ExecuteNonQuery();
constr.Close();
}
}
1条答案
按热度按时间ki1q1bka1#
因为列数据类型定义设置为整数,所以小数点被截断,所以首先应该修改
Betrag
列到decimal
具有一定精度和比例的数据类型,如下例:之后,尝试设置
MySqlParameter
执行参数化查询decimal
具有指定设置的数据类型(请参阅文档):注意:您也可以尝试简化版本,而不必像
cmd.Parameters.Add("@Betrag", MySqlDbType.Decimal).Value = Convert.ToDecimal(dataGridView1.Rows[i].Cells[0].Value);
.