【发布时间】:2017-07-06 20:54:22
【问题描述】:
你好我有以下cs代码
SqlConnection con = new SqlConnection();
SqlCommand com = new SqlCommand();
String comando = "";
con = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["INBIOTECAConnectionString"].ToString());
SqlDataReader leer = null;
String diaUltimo = "";
String fecha = DateTime.Now.ToString("dd/MM/yyyy");
try
{
con.Open();
comando = " SELECT TOP 1 hora FROM SI_RegEntrada WHERE nombre = '" + name + "' and dia = '"+fecha+"' ORDER BY id DESC;";
com = new SqlCommand(comando, con);
leer = com.ExecuteReader();
while (leer.Read())
{
diaUltimo = leer[0].ToString();
}
if (diaUltimo.Equals(""))
{
return false;
}
else
{
return true;
}
}
catch (Exception ex)
{
return true;
}
finally
{
con.Close();
con.Dispose();
com.Dispose();
com = null;
con = null;
}
它应该很简单,它会检查今天 SI_RegEntrada 表中是否有来自任何用户(名称)的条目(fecha)。
SELECT TOP 1 hora FROM SI_RegEntrada WHERE nombre = '" + name + "' and dia = '"+fecha+"' ORDER BY id DESC;
好的,到目前为止一切顺利,我继续阅读 var diaUltimo 上的结果。
在我的本地服务器上,如果没有结果(意味着今天,那个用户,没有与系统交互),diaUltimo 会得到 p>
diaUltimo = ""
所以我在 if/else 条件中检查是否返回真或假。 在实时服务器中,它总是落在 catch 子句上,并且总是返回 true。
我在想,也许 diaUltimo 会得到某种空值,或者某些 sql 错误。
我无法调试或与实时服务器交互。
【问题讨论】:
-
你确定它在 if/else 或 catch 上失败了吗?
-
如果用户没有任何交互,那么您的查询将返回 NULL,而不是空字符串,如果有帮助的话
-
在catch中,我尝试将catch的return改为false,每次都这样做,所以100%肯定它落入catch中
-
那么异常类型和消息是什么?
-
知道哪一行引发异常非常重要。即使您无法调试,但您可以放置某种日志记录以查找引发异常的行。可能连接失败。
标签: c# sql-server