【发布时间】:2016-03-15 04:40:28
【问题描述】:
object check;
string q = "query details";
using (SqlCommand cmd = new SqlCommand(q, sc))
{
try
{
sc.Open();
check = cmd.ExecuteScalar();
sc.Close();
}
catch (Exception e)
{
// Alert user, continue execution;
CloseConnectionIfOpen(sc);
return s;
}
if (check == null)
{
// Alert user, continue execution;
return s;
}
else
{
stringvariable = check.ToString();
}
}
我现在是否需要检查 stringvariable 是否为空字符串,或者我可以保证它至少包含 1 个字符?
如果我可以保证字符串不为空,那么继续尝试从ExecuteScalar() 转换返回并捕获异常是否更有意义?
【问题讨论】:
-
一个空字符串 != null 字符串,所以你真的应该检查它里面有什么东西。您可以使用
string.IsNullOrEmpty()来检查是否是其中一个。 -
我认为这会起作用,除了要达到那一步我必须尝试将 null 对象转换为字符串,并且在达到我可以调用 IsNullOrEmpty() 的点之前抛出异常.你的第一句话证实了我的想法。
-
使用充满了我无法触及的信息的遗留数据库在截止日期前工作。我真的不想花我公司的时间来启动一个新的控制台程序,创建一个虚拟数据库,输入一个带有空字符串的行,然后运行程序来快速提问。我现在可以做安全的事情,检查对象,然后检查字符串,这就是我在等待看是否有人有任何输入时正在做的事情。
-
您仅确定来自
ExecuteScalar()的返回值是NOT NULL - 仅此而已。 YES - 如果它是一个字符串,它可以是一个空字符串 - 这也是 not null
标签: c# sql .net sql-server exception