C# - Microsoft Access:空TextBox无法将数据传递到Access数据库(数据类型:数字)

时间:2016-08-09 04:38:21

标签: c# ms-access

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

使用以下代码:

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


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

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

注意2:如果Access数据库字段的数据类型设置为数字(双精度),则如果textboxSample1为空,则代码运行错误。错误描述,

  

标准表达式中的数据类型不匹配。

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

1 个答案:

答案 0 :(得分: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));