下文的用到的數據庫表:
數據庫中存在表table, 有name(varchar類型),age(int類型)。
1.查詢語句中引用變量值
在執行INSERT語句時,如果對具體的值進行插入則很簡單,如下向數據庫表table中插入記錄:name='穎',
age=32。
mysql_query(MYSQL*, "INSERT INTO table values('曹穎',32)");
但如果插入的是變量的值,如數據是用戶輸入的,這些數據保存在變量中。與在java中插入變量值的方式完全不同,C語句則要使用如下方式實現:
假如用戶輸入的姓名和年齡值分別保存在變量name,age中
char sql_insert[200];
sprintf(sql_insert, "INSERT INTO table values('%s','%d');", name, age);
mysql_query(&mysql_conn, sql_insert);
上述語句在執行完sprintf語句後,sql_insert中保存的是INSERT查詢語句字符串,sql_insert作爲mysql_query()語句的參數即可實現正確的插入。
這裏例舉的是 INSERT 語句,當然,對其它操作語句如SELECT,UPDATE,DELETE等亦如此。
2.如果提取查詢結果值
同樣我們查詢table表中的所有字段,實現語句如下:
MYSQL_RES *res_ptr;
MYSQL_ROW row;
mysql_query(&mysql_conn, select_sql);
res_ptr = mysql_store_result(&mysql_conn);
while ((row = mysql_fetch_row(res_ptr)))
{
printf("%s %s\n", row[0], row[1]);
}
注意:row[0]中是姓名 -- 是字符串; 而row[1]字段是年齡,應該是int類型,但事實上row[1]的值也是一字符串,所以在獲得數據庫中記錄的字段時,所有的字段均轉換爲字符串形式提取,所以在打印row[1]時格式段用的是%s,而不是%d 。