【问题标题】:How can I use ExecuteScalar command for null returns? [duplicate]如何使用 ExecuteScalar 命令返回空值? [复制]
【发布时间】:2023-03-26 01:59:02
【问题描述】:

我有这样的 Oledbconnection(这是示例代码):

public string var1, var2;
...
OleDbConnection Connection;
    Connection = new OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0;Data Source=" +
               Server.MapPath("~/db.mdb"));

OleDbCommand Command1, Command2;

Command1 = new OleDbCommand("SELECT DT FROM Table1 WHERE ID = 1", Connection);
Command2 = new OleDbCommand("SELECT GT FROM Table1 WHERE ID = 1", Connection);

Connection.Open();
var1= (string)Command1.ExecuteScalar();
var2= (string)Command2.ExecuteScalar();
Connection.Close();

当 Oledbcommand 为空时,ExecuteScalar 出现错误。

我可以使用 try-catch 或者我可以控制对象是否为空。但是有可能做到这一点的简单方法吗?我只想如果查询为空,我想设置空 var1 和 var2。

谢谢。

【问题讨论】:

  • 我不明白。只需检查if(var1 == null) 或其他什么?
  • 实施空检查,
  • 如果查询为空,我想这样设置:var1 = "";。因为如果 oledbcommand 为空,executescalar 不起作用。
  • 对于分配,您可以使用空合并运算符 var1= (string) (Command1.ExecuteScalar() ?? "");这意味着如果执行标量返回 null,则返回 ""。事后不要忘记检查 dbnull

标签: c# asp.net oledb


【解决方案1】:

你必须检查返回值是否等于DBNull

var result1 = Command1.ExecuteScalar(); //you get an object here, not a string
if (result1 != DBNull.Value && result1 != null)
{
   var1 = (string)result1;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多