c 中 執行SQL語句

2021-06-21 14:28:20 字數 1458 閱讀 4943

網上看的:刪除一行資料,雖然下面兩個寫法都能實現,但是都有問題。

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...