網上看的:刪除一行資料,雖然下面兩個寫法都能實現,但是都有問題。
void c資料庫測試dlg::onbnclickeddelbtn()
cstring str = m_listctrl.getitemtext(index, 1);
strsql.format(_t("delete from customertype where ctypename = '%s'"), str);
m_precordset->open((_bstr_t)strsql, m_pconnect.getinte***ceptr(), adopendynamic, adlockoptimistic, adcmdtext);
// m_precordset->close(); //用上這句後為什麼程式崩潰,雖然也能把資料刪除!
oninitgird(); //再次讀取到列表檢視控制項中
}為什麼加上close()後程式崩潰,是不是因為open是開啟記錄集的函式,但是strsql語句裡是個刪除語句,它雖然把這條語句執行了,但是卻沒有得到記錄集,因為它不是select * from,所以得不到查詢結果的記錄集。如果再關閉的話,程式就崩潰。。不知道這樣理解對不對,意思就是說:雖然這用m_precordset的open方法也能實現刪除,但是這種方法不對。應該是真正意義上的開啟,就是select * from 表,然後再執行新增,刪除,修改等。。。。就象下面這樣的寫法。。。
void c資料庫測試dlg::onbnclickeddelbtn()
cstring str = m_listctrl.getitemtext(index, 1);
strsql.format(_t("select * from customertype"));
m_precordset->open((_bstr_t)strsql, m_pconnect.getinte***ceptr(), adopendynamic, adlockoptimistic, adcmdtext);
strsql.format(_t("delete from customertype where ctypename = '%s'"), str);
m_pconnect->execute((_bstr_t)strsql, null, adcmdtext);
m_precordset->close();
oninitgird();}
1.執行update insert delete語句時用m_pconnect->execute,
因為這些語句不返回資料,只會返回影響的行數.
執行select語句時用m_precordset->open,
也可以用m_precordset=m_pconnect->execute.2
第一種方法open函式會執行相應的sql語句
而你的sql語句就是刪除語句
這個語句會執行但是開啟記錄集的操作不會成功
再關閉就是會失敗了
執行execute不需要先open。
PDO中執行SQL語句
exec 方法 exec 方法返回執行後受影響行數,語法如下 int pdo exec string statement 引數statement是要執行的sql語句。該方法返回執行查詢時受影響的行數,通常情況下用於insert,delete和update語句中。例如 php view plain c...
ACCESS中執行sql語句
不會就看圖 access採用sql語句與sql的區別 access中提供查詢物件,在設計時可以採用設計檢視和sql檢視,非常方便,sql檢視中的sql語句可以在sql server中使用,但是否完全可用呢?答案是否定的,表中總結了 microsoft access 和 microsoft sql s...
如何執行SQL語句 C
如何執行 sql語句 單個返回值 c string a selectcount from 表名 object b this.dbgr.execsql a 如何執行 sql語句 多個返回值 c string sql selectcount 欄位一 as 別名一,count 欄位二 as 別名二 fro...