我想将空文本框传递给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数据库的方法是什么?
答案 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));