2015-02-11 34 views
-1

我有在mysql用插入一個問題刪除一條記錄後,新的記錄。新插入的記錄插入到其他記錄之前,插入前一個記錄被刪除的位置。MySQL的插入其中記錄剛刪除

所以,如果我有三個記錄,像這樣:

SnippetNum Snippet 
1    #1 
2    #2 
3    #3 

如果我刪除記錄#1,下一條記錄被插入,像這樣

SnippetNum Snippet 
4    #4 
2    #2 
3    #3 

這是搞亂我的記錄是如何顯示在checkedListBox中

以下是在checkedListBox中顯示項目的代碼

 private void RefreshCheckedListNoteSnippets() { 
     AnesthNoteSnippets.Refresh(); 
     checkedListNoteSnippet.Items.Clear(); 
     for (int i = 0; i < AnesthNoteSnippets.List.Length; i++) { 
      string command = "SELECT Snippet FROM anesthnotesnippet WHERE SnippetNum = " + AnesthNoteSnippets.List[i].SnippetNum + " ORDER BY SnippetNum ASC"; 
      string snippet = DataCore.GetScalar(command); 
      if (snippet != String.Empty) { 
       checkedListNoteSnippet.Items.Add(snippet, false); 
      } 
     } 
     } 

這裏是我的插入到代碼:

public static void Insert(string snippet) { 
    string command = "INSERT INTO anesthnotesnippet (Snippet)" + 
     " VALUES ('" + snippet + "')"; 
    DataCore.GetScalar(command); 

} 

任何建議表示讚賞

+1

這沒關係。您可以以任何您想要的順序檢索它們。 – 2015-02-11 02:57:57

+0

檢查RefreshCheckedListNoteSnippets,你得到一個WHERE和ORDER ... – Mate 2015-02-11 03:03:58

回答

2

在SQL中,行有表中沒有保證內在的排序順序,DBMS可以自由地把他們在那裏想。

如果你需要他們以特定的方式進行排序,這就是你在做萃取東西,這你已經出現在你的select聲明。

但是,因爲你只是在做一個片斷在一個時間反正(使order by多餘的),它看起來將回落至指定的順序:

for (int i = 0; i < AnesthNoteSnippets.List.Length; i++) 

這就是在那裏你需要集中注意力,可能AnesthNoteSnippets.List沒有按照你想要的方式排序。

檢查到AnesthNoteSnippets.Refresh()呼籲確保列表適當排序上刷新。

+0

是的,你是paxdiablo得益於正確的「我」倍的片段。問題出現在我的刷新方法之前檢索數據表的另一種方法。我不得不在我的Refresh方法中添加「ORDER BY SnippetNum」,如下所示: – 2015-02-11 03:30:39

+0

string command =「SELECT * FROM anesthnotesnippet ORDER BY SnippetNum」; DataTable table = DataCore.GetTable(command); List = new AnesthNoteSnippet [table.Rows.Count]; 對(INT I = 0;我 2015-02-11 03:35:01