gpt4 book ai didi

mysql - C# Visual Basic 错误十进制

转载 作者:行者123 更新时间:2023-11-30 00:49:00 25 4
gpt4 key购买 nike

我的代码有一些问题(在我们的sql数据库UnitPriceTotalPrice数据类型decimal中,当我想添加数据时,我出现此错误
“将数据类型 varchar 转换为数字时出错”

我的代码:

#region EDIT RECORD 
private bool EditRecord()
{
DataRow row = gridView1.GetDataRow(gridView1.FocusedRowHandle);
if (row == null) return false;
PopupChillers frm = new PopupChillers();
frm.InitData(this.FindForm(), gridControl3, gridView1, row);
bool ret = frm.ShowDialog() == DialogResult.OK;
if (ret)
{
row.ItemArray = frm.Row.ItemArray;
string DegiskenId;
DegiskenId = row[0].ToString();

#region Kaydet guncelle hata kontrolu
try
{
#region Guncelle
if (KayitSekli == "GUNCELLE")
{
string gsorgu = "UPDATE OrnekTbl SET ProjectName=@ProjectName,UnitPrice=@UnitPrice,TotalPrice=@TotalPrice WHERE ProjectName='" + DegiskenId + "'";
objSqlDataAdapter.UpdateCommand = new SqlCommand(gsorgu, objSqlConnection);
objSqlDataAdapter.UpdateCommand.Parameters.Add("@ProjectName", SqlDbType.VarChar).Value = row[0].ToString();

objSqlDataAdapter.UpdateCommand.Parameters.Add("@UnitPrice", SqlDbType.VarChar).Value = row[1].ToString();
objSqlDataAdapter.UpdateCommand.Parameters.Add("@TotalPrice", SqlDbType.VarChar).Value = row[2].ToString();

{
objSqlConnection.Open();
objSqlDataAdapter.UpdateCommand.ExecuteNonQuery();
}
objSqlConnection.Close();

}
#endregion

#region Kaydet
if (KayitSekli == "KAYDET")
{
string ksorgu = "INSERT INTO OrnekTBL (ProjectName,UnitPrice,TotalPrice) VALUES (@ProjectName,@UnitPrice,@TotalPrice)";
objSqlDataAdapter.InsertCommand = new SqlCommand(ksorgu, objSqlConnection);
objSqlDataAdapter.InsertCommand.Parameters.Add("@ProjectName", SqlDbType.VarChar).Value = row[0].ToString();

objSqlDataAdapter.InsertCommand.Parameters.Add("@UnitPrice", SqlDbType.VarChar).Value = row[1].ToString();
objSqlDataAdapter.InsertCommand.Parameters.Add("@TotalPrice", SqlDbType.VarChar).Value = row[2].ToString();

if (objSqlConnection.State == ConnectionState.Closed)
{
objSqlConnection.Open();
objSqlDataAdapter.InsertCommand.ExecuteNonQuery();
}
}
#endregion
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
objSqlConnection.Close();
}
#endregion
row.EndEdit();

}
return ret;
}
#endregion

最佳答案

错误消息看起来很清楚。看看你的参数:

objSqlDataAdapter.UpdateCommand.Parameters.Add("@UnitPrice", SqlDbType.VarChar).Value = row[1].ToString();
objSqlDataAdapter.UpdateCommand.Parameters.Add("@TotalPrice", SqlDbType.VarChar).Value = row[2].ToString();

您将它们显式声明为 SqlDbType.VarChar。然而,字段名称表明它们是数值。 (金钱?十进制?)参数需要与列的数据类型匹配。也许是这样的:

decimal unitPrice = 0;
if (!decimal.TryParse(row[1].ToString(), out unitPrice))
{
// TODO: Handle the error if it's not a valid decimal
}
objSqlDataAdapter.UpdateCommand.Parameters.Add("@UnitPrice", SqlDbType.Decimal).Value = unitPrice;

关于mysql - C# Visual Basic 错误十进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21139975/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com