作者relievezaoc (shu)
看板Database
標題[SQL ] c# access insert語法問題
時間Sun May 19 22:23:37 2013
參考書藉: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
1F:→ denby:INSERT的寫法沒錯 照著錯誤訊息往該方向找吧 05/19 23:01
GOOGLE過 好像是說資料庫沒連接到之類的意思
SELECT沒問題 INSERT就未初始化
明明就是複製貼上的的說+_+>..
試過
OleDbConnection cn = new OleDbConnection();
cn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=DbScore.mdb";
也一併重新貼在INSERT 但是結果還是一樣未初始化
2F:→ tedcat:da.fill-> 從sql取result取一個在程式暫存的table名稱 05/19 23:27
3F:→ tedcat:所以妳要先有一個result table才可以... 05/19 23:28
4F:→ tedcat:你不可能期望你insert資料進去後,程式就這麼聰明的知道 05/19 23:35
5F:→ tedcat:知道你要從那個表取什麼樣的資料集出來吧... 05/19 23:35
@_@
意思是insert不能照抄select da.fill的方式嗎?@@"
※ 編輯: relievezaoc 來自: 118.160.85.185 (05/19 23:45)
6F:→ tedcat:意思是你insert完之後要在把本來的select那段也補上去... 05/19 23:46
7F:→ tedcat:這樣ds才會有score的結果集啊... 05/19 23:46
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)
8F:→ tedcat:剛查了一下語法,insercommand完之後還需要執行他 05/20 00:48
9F:→ tedcat:da.InsertCommand.ExecuteNonQuery(); 05/20 00:48
10F:→ tedcat:google到這篇語法 跟你的用途應該是一樣的 05/20 00:50
!!感謝!!!成功了
但需要再加一條
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)
12F:→ tedcat:我就只是把你的da.insert...當成關鍵字 05/21 19:52
13F:→ tedcat:另外,你那個是屬於vb.net/c#.net的層面,所以你打insert sql 05/21 19:53
14F:→ tedcat:insertcommand sql是不會有結果的...你應該打的是.net inse 05/21 19:53
15F:→ tedcat:.net insertcommand就會找到一堆了 05/21 19:53
哦哦..瞭解@__@!!
再次感謝你~~!!
※ 編輯: relievezaoc 來自: 118.160.87.109 (05/22 21:40)