在数据库c中保存一个十进制值#

时间:2014-04-15 07:40:21

标签: c# sql visual-studio-2012

我正在尝试将文本框中的值保存到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);
            }
        }

enter image description here

3 个答案:

答案 0 :(得分:1)

1。您的表中可能包含的列数多于查询中提到的值(3)。 因此,最好在查询中指定要插入值的列的列名。

试试这个:

INSERT INTO [TableName](COL1,COl2,COL3)
Values(Value1,Value2,Value3);

2。正如您所提到的,您的columsn是小数,您将它们作为字符串插入,方法是将值括在单引号中。

您不应将十进制值括在单引号中。

建议:您的查询对SQL注入攻击开放。 我建议你使用Parameterised查询来避免它们。

答案 1 :(得分:0)

将数据类型更改为(18,6)左右,以适合您为准,

十进制数据类型的第二部分显示“点”之后需要多少位数。在你的情况下它是' 0',所以db将它四舍五入为最接近的整数。

来源:http://msdn.microsoft.com/en-us/library/ms187746.aspx

答案 2 :(得分:0)

您缺少insert声明中的字段。

数据库将尝试确定正确的列及其顺序,但如果您未按适当的顺序提供所有字段,则查询将失败。

简而言之:

  1. 以正确的顺序发送所有字段;
  2. 或者:添加要填写insert
  3. 的字段

    样品:

    String sql = "INSERT into [login_register].[dbo].[BlerjeShitje] (Blerje, Shitje, Data) values ('" + Blerje + "','" + Shitje + "','" + Data + "')";