linux c mysql的一些細節

下文的用到的數據庫表:
   
          數據庫中存在表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 。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章