2017-07-06 2 views
0

関連こんにちは、私は、次のCSコードコードは、ローカルで作業ではなく、サーバーに、SQLおよび空文字列

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; 

okこれまでのところ、私はvar diaUltimoの結果を読み進めています。結果がない場合は、私のローカルサーバー上

、diaUltimoはそう私はそれをチェック

diaUltimo = "" 

の値を取得します(今日は、そのユーザは、システムと対話していないことを意味します) if/else条件はtrueまたはfalseを返します。 ライブサーバーでは、常にcatch句に入り、常にtrueを返します。

私は、diaUltimoが何らかの種類のヌル値またはSQLエラーを受け取っている可能性があると考えていました。

ライブサーバーとのデバッグや対話ができません。

+1

あなたはそれがある場合に失敗してもよろしいですあなたが値を割り当てnullまたは空でもないことを確認するには二重の義務を動作します/ elseまたはキャッチ? –

+0

うまくいけば、クエリがnullを返します。ユーザーが何もやり取りしていない場合は空の文字列ではなく、catchの中の – scsimon

+0

を助けて、キャッチの戻り値をfalseに変更しようとしました。それはキャッチに落ちることを100%確信しています –

答えて

0

con.Open()が発生している可能性が非常に高いです。あなたのコードでは他に問題がないようです。

0

まず、一時的にあなたのテーブルまたは行に依存しないSQLコマンドであることをcomandoの文字列の内容を置き換える...のようなもの:

static string commando = "Select to_char(sysdate) from dual"; 

これは2つのことを行います:それはかどうかをテストします接続オブジェクトとSQLExecuteの両方が期待どおりに動作し、ライブデータベースの日付フィールドにデフォルトの書式マスクがテストされます。

結果が得られない場合は、'true'を返さずに例外を診断し始めますが、代わりに内部例外を発生させ、検査するためにexオブジェクトの内容を渡します。

2

変更ライン

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

if(!String.IsNullOrEmpty(diaUltimo)) 
{ 
return true; 
} 
else 
{ 
return false; 
} 

にそれは

+0

私はローカルサーバーでも、それがうまくいきますが、私は思っていないよりシンプルなものを試してみるつもりです。if(leer.HasRows) { return true; } else { false false; } –

+1

@ErickReyesと同じように、あなたのSQLはNULLを返します。トラビス+1。 – scsimon

関連する問題