2017-04-26 10 views
0

最近、.NET(C#)でいくつかのデータベースのことを学び始めました。オブジェクトのリストをローカルデータベースに挿入する際に問題があります。私はその理由を知っていませんが、クエリを実行した後、ベースはまだ空ですが、エラーや警告はありません。コードに問題があるかどうか教えてください。 。データがローカルデータベースに挿入されていません

私はデバッグしようとしましたが、コードが動作しているようで、if文を渡し、パラメータの値を追加しました。スレッド開始メソッドも削除しました。あなたが実際にあなたが現在行わないSQLコマンド、実行する必要がある時点で

enter image description here

public static void SaveData() 
{ 
    new Thread(() => 
    { 
     Thread.CurrentThread.IsBackground = true; 

     using (SqlConnection conn = new SqlConnection(conString)) 
     { 
      conn.Open(); 

      using (SqlCommand cmd = new SqlCommand("INSERT INTO Przestoje(Urzadzenie, Czas, Data) VALUES(@nazwa, @czas, @data)", conn)) 
      { 
       cmd.Parameters.AddWithValue("@nazwa", SqlDbType.NVarChar); 
       cmd.Parameters.AddWithValue("@czas", SqlDbType.Int); 
       cmd.Parameters.AddWithValue("@data", SqlDbType.NVarChar); 

       int count = allEncounters.Count; 

       for (int i = 0; i < count; i++) 
       { 
        if (i >= NextIndex) 
        { 
         cmd.Parameters["@nazwa"].Value = allEncounters[i].Name; 
         cmd.Parameters["@czas"].Value = allEncounters[i].timeOnTimeout * 10; 
         cmd.Parameters["@data"].Value = allEncounters[i].startDate.ToString(); 
        } 
       } 

       NextIndex = count; 
      } 
     } 
    }).Start(); 
} 

答えて

4

cmd.ExecuteNonQuery(); 

を使用すると、1つのレコードを挿入するために探している場合に、この終わり近くになるだろう。ループ内に複数のレコードを挿入しようとしているように見えますが、これはもちろんループ内で発生します。 (レコードごとに1回)

+0

をそのダウントリミングすることができますし、迅速なために皆に感謝応答、私はこのメソッドを再構築した後にこの行を追加するのを忘れてしまったので、単純なバグですが、私はそれを見ることができませんでした。どうもありがとう。 – pablocity

1

SqlCommandを実行する必要があります。 "NextIndexは=カウント;" 前にこれを入れて:

cmd.ExecuteNonQuery(); 
1

をあなたがブロックを使用して実行するのを忘れ:

cmd.ExecuteNonQuery(); 
1

あなたは

  for (int i = NextIndex; i < allEncounters.Count; i++) 
      { 
        cmd.Parameters["@nazwa"].Value = allEncounters[i].Name; 
        cmd.Parameters["@czas"].Value = allEncounters[i].timeOnTimeout * 10; 
        cmd.Parameters["@data"].Value = allEncounters[i].startDate.ToString(); 
        cmd.ExecuteNonQuery(); 
      } 

      NextIndex = allEncounters.Count; 
関連する問題