【问题标题】:C# - Microsoft Access: Empty TextBox could not pass data to Access Database (Data Type: Number)C# - Microsoft Access:空文本框无法将数据传递到 Access 数据库(数据类型:数字)
【发布时间】:2016-12-14 23:53:07
【问题描述】:

我想将空文本框传递给 Access 数据库(数据类型:数字),但它显示错误(条件表达式中的数据类型不匹配。)

使用了以下代码:

oleDBCommand.CommandText =
 "INSERT INTO tblRoutineChemAnalData ([Sample1 Vol]) VALUES (@Sample1Vol)";


oleDBCommand.Parameters.Add(new OleDbParameter("@Sample1Vol", textBoxSample1.Text));

注意 1:如果 Access 数据库字段的数据类型设置为 短文本/长文本,如果 textboxSample1 为空,则代码运行良好

注意 2:如果 Access 数据库字段的数据类型设置为 Number (Double),如果 textboxSample1 为空,则代码运行错误。错误说明,

条件表达式中的数据类型不匹配。

我可以知道将空文本框传递给具有 Number (double) 作为数据类型的 Access 数据库的方法是什么吗?

【问题讨论】:

    标签: c# ms-access


    【解决方案1】:

    您可以像这样使用 DBNull.Value。

    double output = 0;
    if (double.TryParse(textBoxSample1.Text, out output))
    {
        oleDBCommand.Parameters.Add(new OleDbParameter("@Sample1Vol", output));
    }
    else
    {
        oleDBCommand.Parameters.Add(new OleDbParameter("@Sample1Vol", DBNull.Value));
    }
    

    确保字段Sample1Vol 接受空值。

    更新:要将其用于多个字段,请将其包装在这样的函数中。

    private OleDbParameter CreateOleDbParameter(string parameterName, string parameterValue)
    {
        double output = 0;
        if (double.TryParse(parameterValue, out output))
        {
            return new OleDbParameter(parameterName, output);
        }
        else
        {
            return new OleDbParameter(parameterName, DBNull.Value);
        }
    }
    

    现在这样使用

    oleDBCommand.Parameters.Add(CreateOleDbParameter("@Sample1Vol", textBoxSample1.Text));
    

    【讨论】:

    • 测试了 DBNull.Value,我也得到了同样的错误。 (条件表达式中的数据类型不匹配。)
    • 我已将字段设置为验证规则(空白)和必填(否)。它应该接受空值。
    • 谢谢.. 它通过向数据库发送空值来工作(意味着数据库不会显示空值,而只是空单元格)。
    • 是否有任何快速的方法来处理上面的代码,因为我有大约 15 个文本框需要通过这个空值检查?
    • 你可以将整个东西包装在一个函数中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-16
    • 1970-01-01
    • 1970-01-01
    • 2014-06-03
    • 1970-01-01
    相关资源
    最近更新 更多