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

Posted

技术标签:

【中文标题】粘贴文本框值以访问数据库【英文标题】:Pasting textbox values to access database 【发布时间】:2011-02-13 06:44:22 【问题描述】:

现在我在 try 语句中遇到了问题(int count =insert.......)。 编译器说(当我按下表单上的按钮以将值保存在文本框中)它无法将参数值从字符串转换为 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();
        
    

【问题讨论】:

【参考方案1】:
insertCommand.Parameters.Add("@datum", OleDbType.Char).Value = DateTime.Now;

您正在插入一个数据类型为 Char 的日期,这看起来是错误的。

【讨论】:

tnx 的答案,但仍然。我更改为日期,dbdat 其他 db___ 并且仍然显示相同的错误 我注意到您也没有设置参数的长度,这可能是问题的一部分。虽然我建议您修改您的问题,以显示数据库中每个字段的数据类型。 一切都是长整数,只是数据是一般日期 尝试将其他的 OleDbType 更改为 BigInt 而不是 Char。 我将所有内容更改为 OleDbType.integer 并将数据更改为 OleDbType.date,现在我在 try 语句中收到错误:无法将参数值从字符串转换为 Int32。我现在应该做什么? 【参考方案2】:

您需要转换您的数据类型: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);

【讨论】:

以上是关于粘贴文本框值以访问数据库的主要内容,如果未能解决你的问题,请参考以下文章

更改文本框的值,与另一个具有比率的文本框值相比

在访问中更改组合框值时,可以更改/重新计算计算的文本框值

我在尝试将 winforms 文本框值保存到连接的 MS 访问数据库时出错

根据组合框选择更改文本框值

ms 访问 - 基于文本框值的复选框

访问 VBA - 使用 VBA 的 SQL 语句使用文本框组合框值在表单上填充列表框 OR