粘贴文本框值以访问数据库

时间:2010-04-28 10:02:29

标签: c# insert database-connection

现在我在try语句中遇到问题(int count = insert .......)。 该分析师说(当我按下表单上的按钮以保存文本框中的值时)它无法将参数值从String转换为Int32。 代码:

private void button1_Click(object sender,EventArgs e)         {

       string conString = "Provider=Microsoft.Jet.OLEDB.4.0;"
     + "Data Source=C:\\Users\\Simon\\Desktop\\save.mdb";

        OleDbConnection empConnection = new OleDbConnection(conString);


        string insertStatement = "INSERT INTO obroki_save "
                             + "([ID_uporabnika],[datum],[ID_zivila],[skupaj_kalorij]) "
                             + "VALUES (@ID_uporabnika,@datum,@ID_zivila,@skupaj_kalorij)";

        OleDbCommand insertCommand = new OleDbCommand(insertStatement, empConnection);

        insertCommand.Parameters.Add("@ID_uporabnika", OleDbType.Integer).Value = users.iDTextBox.Text;
        insertCommand.Parameters.Add("@datum", OleDbType.Date).Value = DateTime.Now;
        insertCommand.Parameters.Add("@ID_zivila", OleDbType.Integer).Value = iDTextBox.Text;
        insertCommand.Parameters.Add("@skupaj_kalorij", OleDbType.Integer).Value = textBox1.Text;
        empConnection.Open();

        try
        {
           int count = insertCommand.ExecuteNonQuery();
        }
        catch (OleDbException ex)
        {
            MessageBox.Show(ex.Message);
        }
        finally
        {
            empConnection.Close();
            textBox1.Clear();
            textBox2.Clear();
            textBox3.Clear();
            textBox4.Clear();
            textBox5.Clear();
        }
    }

2 个答案:

答案 0 :(得分:1)

insertCommand.Parameters.Add("@datum", OleDbType.Char).Value = DateTime.Now;

您正在插入日期作为数据类型Char,看起来不对。

答案 1 :(得分:0)

你需要转换你的数据类型:textbox.value持有一个字符串并转换它,你可以使用int.Parse。

    insertCommand.Parameters.Add("@ID_zivila", OleDbType.Integer).Value = int.Parse(iDTextBox.Text);
    insertCommand.Parameters.Add("@skupaj_kalorij", OleDbType.Integer).Value = int.Parse(textBox1.Text);