看板 C_Sharp 關於我們 聯絡資訊
各位大大們好 小弟我在練習時碰到一個問題 就是我有一個listbox選單 他連結了一個資料庫 我有新增,更新,刪除功能的按鈕 當我按下去的時候 資料庫的確會執行我的新增,更新,刪除的動作 但是listbox並不會自動更新 我有在執行完新增,更新,刪除的動作之後打上 this.iPodTableAdapter.Fill(this.iPodsDataSet.iPod); 我的資料庫名稱是iPods 裡頭的資料表名稱是iPod 這一行是在我用listbox連結資料庫後,自動生成在Form1_Load裡頭 所以我想說用這行就能自動更新,但這方法似乎不可以... 有大大們可以指導一下嗎 像是要用什麼指令之類的 只缺這個新增,更新,刪除後的再次連結我的練習就完成拉 先謝過了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.167.183.236
pico2k:請附上完整的程式碼 06/02 17:31
public void AccessDelete() { OleDbConnection thisConnection = new OleDbConnection("Provider= Microsoft.Jet.OLEDB.4.0;Data Source=../../iPods.mdb;"); (這行太長所以小弟分成兩行) thisConnection.Open(); string str = "Delete FROM iPod where Name =('" + listBox1.Text + "')"; OleDbCommand thisCommand = new OleDbCommand(str, thisConnection); thisCommand.ExecuteNonQuery(); thisConnection.Close(); this.iPodTableAdapter.Fill(this.iPodsDataSet.iPod); 桧项 }//這是小弟我寫的刪除資料庫資料的程式碼 private void Form1_Load(object sender, EventArgs e) { //TODO:這行程式碼會將資料載入'iPodDateSet'資料表,您可以視進行移動 // 或移除 this.iPodTableAdapter.Fill(this.iPodsDataSet.iPod); }//只要我listbox完成了資料連結的動作,就會自動產生這行程式碼 因為這樣小弟我把這行程式碼當作是對資料庫的連結 所以才貼在刪除的那個函式(AccessDelete)裡頭,想說進行完刪除動作後 listbox也會自動更新,但似乎沒什麼用....先謝過1樓大大了 ※ 編輯: cross0619 來自: 118.167.183.236 (06/02 17:49)
allenstyle:您在進行新增、刪除、修改時都要記得在那個動作後,重 06/02 21:25
allenstyle:新 bind 那些資料,就可以達到你要的效果! 06/02 21:26
可以麻煩allenstyle大大詳細說明一下嗎 頭一次使用資料連結 不知道那個bind怎麼用... 先謝過了 ※ 編輯: cross0619 來自: 118.167.183.236 (06/02 21:57) 剛剛亂試了一堆東西 看來沒人指導還是挺難理解的 想說用listbox裡頭的add跟remove來湊和 但是也不行 會出現資料已繫節 無法修改 這樣的錯誤 拜託有知道的大大指導一下了 先謝過 ※ 編輯: cross0619 來自: 118.167.183.236 (06/02 23:25)
andymai:應該只是需要再執行一次listbox的DataBind方法? 06/02 23:33
可以麻煩大大詳細指導一下嗎 我剛剛有試過這方法,可是我不知道怎麼使用 再次謝過M(_ _)M ※ 編輯: cross0619 來自: 118.167.183.236 (06/02 23:41)
andymai:就像allenstyle說的在動作後執行listBox.DataBind();這樣 06/02 23:46
andymai:不行嗎? 06/02 23:46
嗯 listbox只有listBox1.DataBindings 而且listBox1.DataBindings(); 還有錯誤 訊息是 不能當成方法使用 ※ 編輯: cross0619 來自: 118.167.183.236 (06/02 23:54)
andymai:Oh! My God!您是在設計WinForm程式而不是WebForm~我都忘了 06/02 23:59
andymai:我在前面有回過文~大概是被推文誤導了(牽拖) 如果是這樣~ 06/03 00:00
andymai:其實只要動作完再給一次DataSource就好了... 06/03 00:00
是這樣嗎 listBox1.DataSource = 資料庫路徑嗎; 但我listBox1DataSource = "../../iPods";這樣用 會有這樣的錯誤訊息 複雜 DataBinding 接受以 IList 或 IListSource 做為資料來源。 煩請大大再教一下吧 快被煩死了....就只差這麼一步 ※ 編輯: cross0619 來自: 118.167.183.236 (06/03 00:06)
andymai:不是~是要給Fill方法裡面那個this.iPodsDataSet.iPod 06/03 00:14
andymai:DataSource = this.iPodsDataSet.iPod.Tables[0]; 06/03 00:15
andymai:可能要先去MSDN翻一下目前為止用到的方法和屬性~不然可能 06/03 00:16
andymai:會有問不完的問題~或是找一本說明詳盡的書也可以... 06/03 00:17
剛剛用大大的DataSource = this.iPodsDataSet.iPod.Tables[0]; 有問題呢 我改成this.iPodsDataSet.iPod[].Tables; 反倒可以 但還是沒有我要的效果 很感謝andymai大大的指導 我會再去查資料 沒想到一個重新連結竟然這麼難搞... 當然還是希望大大們可以不吝提供解說XD ※ 編輯: cross0619 來自: 118.167.183.236 (06/03 00:45)
andymai:?Fill裡面不是只能放DataSet嗎?我想知道那iPod是什麼類別 06/03 01:03
andymai:囧~剛剛看到VS提示的Fill沒多載就懷疑了~沒想到去MSDN查~ 06/03 01:07
andymai:果然是有滴!!!用慣了別人的api~現在連基本的都忘了Orz... 06/03 01:07
iPod是一個資料庫 我把它給加入到專案裏頭 左邊工具箱就自動多出iPodDateSet,iPodTableAdapter,TableAdapterManager這三個元件 設計頁面多出iPodSet,iPodBindinfSource,iPodTableAdapterManager三個元件 像是拉進timer那樣子 this.iPodsDataSet.iPod 這行程式碼是自動生出來的 我也搞不清楚iPod是什麼類別 我找到問題所在了 我資料庫讀取路徑打錯 OleDbConnection thisConnection = new OleDbConnection("Provider= Microsoft.Jet.OLEDB.4.0;Data Source=../../iPods.mdb;"); 路徑打錯了.... 謝謝各位的幫助了 ※ 編輯: cross0619 來自: 210.60.11.157 (06/03 10:38)
wayren:你只是要簡單的I/O功能,基本上只要ConnectionString對, 06/15 06:21
wayren:T-SQL的語法對,就能夠被執行。我好奇的是,你的DB裡面只有 06/15 06:22
wayren:一欄(Column)的資料嗎? Delete * From iPod Where ..... 06/15 06:25
wayren:多個 * 會比較像是標準的寫法.... 06/15 06:26
wayren:另外你說的iPod只是你資料庫的名稱....當然不是甚麼類別。 06/15 06:29
wayren: 表 06/15 06:30