我正在尝试将文本框中的值保存到sql数据库中。我有错误,如图所示。我的代码如下:
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);
}
}
答案 0 :(得分:1)
1。您的表中可能包含的列数多于查询中提到的值(3)。 因此,最好在查询中指定要插入值的列的列名。
试试这个:
INSERT INTO [TableName](COL1,COl2,COL3)
Values(Value1,Value2,Value3);
2。正如您所提到的,您的columsn是小数,您将它们作为字符串插入,方法是将值括在单引号中。
您不应将十进制值括在单引号中。
建议:您的查询对SQL注入攻击开放。 我建议你使用Parameterised查询来避免它们。
答案 1 :(得分:0)
将数据类型更改为(18,6)左右,以适合您为准,
十进制数据类型的第二部分显示“点”之后需要多少位数。在你的情况下它是' 0',所以db将它四舍五入为最接近的整数。
答案 2 :(得分:0)
您缺少insert
声明中的字段。
数据库将尝试确定正确的列及其顺序,但如果您未按适当的顺序提供所有字段,则查询将失败。
简而言之:
insert
。样品:
String sql = "INSERT into [login_register].[dbo].[BlerjeShitje] (Blerje, Shitje, Data) values ('" + Blerje + "','" + Shitje + "','" + Data + "')";