[SQL ] c# access insert語法問題[已解]

看板Database作者 (shu)時間11年前 (2013/05/19 22:23), 編輯推噓0(0015)
留言15則, 2人參與, 最新討論串1/1
參考書藉:visual c# 2010 速學對策 資料庫他講到select的寫法: OleDbDataAdapter da = new OleDbDataAdapter(); DataSet ds = new DataSet(); string Sql = "select * from [Score]"; da.SelectCommand = new OleDbCommand(Sql, cn); da.Fill(ds, "Score"); dataGridView1.DataSource = ds.Tables["Score"]; cn.Close(); } google新增的寫法是insert into 資料表(a,b) values ('c','d'); 所以我照抄了 OleDbDataAdapter da = new OleDbDataAdapter(); DataSet ds = new DataSet(); string Sql = "INSERT INTO Score ([學號],[姓名]) VALUES('123','test')"; da.InsertCommand = new OleDbCommand(Sql, cn); da.Fill(ds, "Score"); dataGridView1.DataSource = ds.Tables["Score"]; cn.Close(); 錯誤訊息為"SelectCommand 屬性尚未初始化。" 試過把[]修掉 也是一樣 不知道是哪裡錯了? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.160.85.185

05/19 23:01, , 1F
INSERT的寫法沒錯 照著錯誤訊息往該方向找吧
05/19 23:01, 1F
GOOGLE過 好像是說資料庫沒連接到之類的意思 SELECT沒問題 INSERT就未初始化 明明就是複製貼上的的說+_+>.. 試過 OleDbConnection cn = new OleDbConnection(); cn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=DbScore.mdb"; 也一併重新貼在INSERT 但是結果還是一樣未初始化

05/19 23:27, , 2F
da.fill-> 從sql取result取一個在程式暫存的table名稱
05/19 23:27, 2F

05/19 23:28, , 3F
所以妳要先有一個result table才可以...
05/19 23:28, 3F

05/19 23:35, , 4F
你不可能期望你insert資料進去後,程式就這麼聰明的知道
05/19 23:35, 4F

05/19 23:35, , 5F
知道你要從那個表取什麼樣的資料集出來吧...
05/19 23:35, 5F
@_@ 意思是insert不能照抄select da.fill的方式嗎?@@" ※ 編輯: relievezaoc 來自: 118.160.85.185 (05/19 23:45)

05/19 23:46, , 6F
意思是你insert完之後要在把本來的select那段也補上去...
05/19 23:46, 6F

05/19 23:46, , 7F
這樣ds才會有score的結果集啊...
05/19 23:46, 7F
OleDbDataAdapter da = new OleDbDataAdapter(); DataSet ds = new DataSet(); string Sql = "INSERT INTO Score (學號,姓名) VALUES('123','test')"; da.InsertCommand = new OleDbCommand(Sql, cn); >>>> string newSql = "select * from [Score]"; >>>> da.SelectCommand = new OleDbCommand(newSql , cn); da.Fill(ds, "Score"); dataGridView1.DataSource = ds.Tables["Score"]; cn.Close(); 沒有錯誤提示了 但是也沒有新增資料+__+||| 就只是個按扭 按了沒有任何反應 該檢查哪邊呢@_@? ※ 編輯: relievezaoc 來自: 118.160.85.185 (05/20 00:01)

05/20 00:48, , 8F
剛查了一下語法,insercommand完之後還需要執行他
05/20 00:48, 8F

05/20 00:48, , 9F
da.InsertCommand.ExecuteNonQuery();
05/20 00:48, 9F

05/20 00:50, , 10F
google到這篇語法 跟你的用途應該是一樣的
05/20 00:50, 10F

05/20 00:50, , 11F
!!感謝!!!成功了 但需要再加一條 cn.open(); 可能是語法就是這樣的關係吧? 如果沒有open的話 錯誤是:ExecuteNonQuery 必須有開啟與可用的 Connection。連接目前的狀態已關閉。 大概要ExecutNonQuery就是要綁個Open吧- 3 -|||| 另外想問一下T大是餵了估狗什麼關鍵字呢@_@? 我GOOGLE InsertCommand SQL 或是 InsertCommand 語法 都沒看到這個網站呢QQ 這網站棒~~繼續研究怎麼新增使用者自己輸入資料~~還有刪除..XD~!!! 心得:sql的語法好難抄啊!!!!!!!!!!!Q冊Q!!!!!!!!~~~ 再次感謝t大的幫忙!!^_^ ※ 編輯: relievezaoc 來自: 118.160.85.185 (05/20 20:52)

05/21 19:52, , 12F
我就只是把你的da.insert...當成關鍵字
05/21 19:52, 12F

05/21 19:53, , 13F
另外,你那個是屬於vb.net/c#.net的層面,所以你打insert sql
05/21 19:53, 13F

05/21 19:53, , 14F
insertcommand sql是不會有結果的...你應該打的是.net inse
05/21 19:53, 14F

05/21 19:53, , 15F
.net insertcommand就會找到一堆了
05/21 19:53, 15F
哦哦..瞭解@__@!! 再次感謝你~~!! ※ 編輯: relievezaoc 來自: 118.160.87.109 (05/22 21:40)
文章代碼(AID): #1HcE1iZR (Database)