Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 代码在本地工作,但不在服务器中工作,与SQL和空字符串相关_C#_Sql Server - Fatal编程技术网

C# 代码在本地工作,但不在服务器中工作,与SQL和空字符串相关

C# 代码在本地工作,但不在服务器中工作,与SQL和空字符串相关,c#,sql-server,C#,Sql Server,你好,我有下面的cs代码 SqlConnection con = new SqlConnection(); SqlCommand com = new SqlCommand(); String comando = ""; con = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["INBIOTECAConnectionString"].To

你好,我有下面的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)上是否有来自任何用户(名称)的条目

好的,到目前为止还不错,我继续阅读var diaUltimo上的结果

在我的本地服务器上,如果没有结果(这意味着该用户今天没有与系统交互),diaUltimo将获得

 diaUltimo = ""
因此,我在if/else条件下检查返回值true或false。 在实时服务器中,它总是落在catch子句上,并且返回的总是true

我在想,也许diaUltimo会得到某种空值,或者一些sql错误


我无法调试或与live server交互。

很有可能
con.Open()
引发异常。代码中没有其他问题

很有可能
con.Open()
引发异常。代码中没有其他问题

首先,暂时将
comando
的字符串内容替换为不依赖于表或行的SQL命令…类似于:

static string commando = "Select to_char(sysdate) from dual";
这将做两件事:它将测试您的连接对象和SQLExecute是否都按预期工作,并且它将测试live数据库中日期字段的默认格式掩码


如果您没有得到任何结果,那么我将开始诊断异常,方法是不返回
'true'
,而是引发内部异常并将
ex
对象内容传递给您检查。

首先,暂时将
comando
的字符串内容替换为不依赖于表或行的SQL命令…类似于:

static string commando = "Select to_char(sysdate) from dual";
这将做两件事:它将测试您的连接对象和SQLExecute是否都按预期工作,并且它将测试live数据库中日期字段的默认格式掩码

如果您没有得到任何结果,那么我将开始诊断异常,方法是不返回
'true'
,而是引发内部异常并将
ex
对象内容传递给您检查。

更改行

if (diaUltimo.Equals(""))
{
  return false;
}
else
{
 return true;
}

在检查您分配的值是否为null或空时,它将起双重作用更改行

if (diaUltimo.Equals(""))
{
  return false;
}
else
{
 return true;
}


在检查您分配的值是否为null或空时,它将起双重作用

您确定它在if/else或catch中失败吗?如果用户没有任何交互,您的查询将返回null,而不是空字符串,如果这有助于在catch中,我尝试将catch的返回值更改为false,并且每次都会这样做,那么100%确定它会被捕获吗?那么什么是异常类型和消息?知道哪一行引发异常非常重要。即使您无法调试,但可以进行某种记录,以查找引发异常的行。可能连接失败了。你确定它在if/else或catch上失败了吗?如果用户没有进行任何交互,你的查询将返回NULL,而不是空字符串,如果这有助于在catch中,我尝试将catch的返回更改为false,它每次都这样做,那么100%确定它会被捕获吗?那么什么是异常类型和消息?知道哪一行引发异常非常重要。即使您无法调试,但可以进行某种记录,以查找引发异常的行。可能是连接失败了。我一直在想类似的事情,即使在我的本地服务器上,它工作得很好,因为现在我要尝试一些我没有想到的更简单的东西:if(leer.HasRows){return true;}else{return false;}就像我说的@ErickReyes,您的SQL返回NULL不是空字符串,NULL!=包括NULL的任何内容。+1 Travis。我一直在想类似的事情,即使在我的本地服务器上,它工作得很好,因为现在我要尝试一些我没有想到的更简单的东西:if(leer.HasRows){return true;}否则{return false;}就像我说的@ErickReyes一样,您的SQL返回NULL不是空字符串,NULL!=包括NULL在内的任何内容。+1 Travis。