【问题标题】:Connecting to mysql from c# gives me null exception从 c# 连接到 mysql 给了我空异常
【发布时间】:2012-06-12 15:40:06
【问题描述】:

我有这个代码:

 con.Open();
 cmd = new MySqlCommand(String.Format("SELECT concat(name,'|',lastname) FROM {0} WHERE ID= ?Parname;", ConfigSettings.ReadSetting("my_data")), con);
 cmd.Parameters.Add("?Parname", MySqlDbType.VarChar).Value = id_value;
 var tokens = ((String)cmd.ExecuteScalar()).Split('|');
 name = tokens[0];
 lastname = tokens[1];

当我输入 id 值并且用户实际上在数据库中时,这可以正常工作。但是当数据库中没有这样的用户时,我得到了空异常。如果他不在数据库中,我需要这样做给我写一个未知用户。

【问题讨论】:

  • 等等,你想在信息不存在的情况下从数据库中获取信息??这没有任何意义。您得到一个空引用异常,因为(可能)对ExecuteScalar 的调用返回空,因为您正在查找的行在数据库中不存在,从您的描述来看,这正是您所期望的。

标签: c# mysql database-connection


【解决方案1】:

如果没有给定id的用户,ExecuteScalar的返回值为DBNull.Value

var result = cmd.ExecuteScalar();
if (result != DBNull.Value)
{
    var tokens = ((String)result).Split('|');
    name = tokens[0];
    lastname = tokens[1];
}
else
{
    name = "unknown";
    lastname = "user";  // or whatever
}

【讨论】:

  • 谢谢你这个代码正在工作。我需要将DBNull.Value 更改为null 才能工作。
猜你喜欢
  • 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
相关资源
最近更新 更多