2017-04-26 149 views
0

我最近開始在.NET(C#)中學習一些數據庫的東西,我在將對象列表插入本地數據庫時遇到了問題。我不知道原因,但是在執行查詢之後,base仍然是空的,並且沒有錯誤或警告,您能告訴我代碼是否有問題,或者是否有其他原因導致它無法正常工作。數據未插入本地數據庫

我試過調試,但代碼似乎工作,它通過如果語句,並添加參數的值,我也刪除了線程啓動方法,並做了同步,但仍然沒有。

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

在某些時候你必須去實際執行SQL命令,您目前沒有做的事:

cmd.ExecuteNonQuery(); 

如果你正在尋找插入一個記錄,這將接近尾聲。雖然看起來你試圖在一個循環中插入多個記錄,所以這當然會發生在循環內部。 (每條記錄一次)

+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;