C# 在数据库c中保存一个十进制值#
我正在尝试将文本框中的值保存到sql数据库中。我的错误如图所示。我的代码如下:C# 在数据库c中保存一个十进制值#,c#,sql,visual-studio-2012,C#,Sql,Visual Studio 2012,我正在尝试将文本框中的值保存到sql数据库中。我的错误如图所示。我的代码如下: public void datastore() { string Blerje, Shitje, Data; Blerje = usdollar_buy.Text; Shitje = usdollar_sell.Text; Data = dateTimePicker.Text;
public void datastore()
{
string Blerje, Shitje, Data;
Blerje = usdollar_buy.Text;
Shitje = usdollar_sell.Text;
Data = dateTimePicker.Text;
try
{
string constring = "Data Source=DELL;Initial Catalog=login_register;Integrated Security=True";
/* Declaring Connection Variable */
SqlConnection con = new SqlConnection(constring);
String sql = "INSERT into [login_register].[dbo].[BlerjeShitje] values ('" + Blerje + "','" + Shitje + "','" + Data + "')";
/* Checking Connection is Opend or not If its not open the Opens */
if (con.State != ConnectionState.Open)
con.Open();
SqlCommand cmd = new SqlCommand(sql, con);
/* Executing Stored Procedure */
cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("Te dhenat u ruajten ne databaze");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
1。表中的列可能比查询中提到的值(3)多。 因此,最好在查询中指定要为哪些列插入值的列名 试试这个:
INSERT INTO [TableName](COL1,COl2,COL3)
Values(Value1,Value2,Value3);
2。正如您所提到的,列n是小数,您通过将值括在单引号内将其作为字符串插入
不应将十进制值括在单引号内
建议:您的查询容易受到SQL注入攻击。
我建议您使用参数化查询来避免它们。将数据类型更改为(18,6)左右,以适合您的为准
decimal数据类型的第二部分显示“点”后需要多少位数字。在您的例子中,它是“0”,所以db将它四舍五入到最接近的整数
来源:您的
insert
语句中缺少字段
数据库将尝试确定正确的列及其顺序,但如果您没有以适当的顺序传递所有字段,则查询将失败
简言之:
String sql = "INSERT into [login_register].[dbo].[BlerjeShitje] (Blerje, Shitje, Data) values ('" + Blerje + "','" + Shitje + "','" + Data + "')";
你忘记上传图像了。但我看到了一个问题:在查询中连接字符串允许SQL注入。忽略这一点,插入的列是什么类型的?列是十进制的