看了一些關於MySQL與C接口的文章,自己也終於經過努力後順利實現了在數據庫和表已經存在的前提下,進行了插入數據的操作,
程序如下:
#include </usr/include/mysql/mysql.h> //絕對要寫絕對路徑,以防沒有找到庫
#include<stdio.h>
#include<stdlib.h>
int main(int argc, char **argv)
{
MYSQL mysql,*ptr;
MYSQL_ROW row;
char SqlText[500]="";
float da=6.0;
int num= 1257487794;
mysql_init(&mysql);//分配或初始化與mysql_real_connect() 相適應的MySQL 對象。 如果mysql 是NULL 指針, 該函數將分配、初始
化, 並返回新對象。否則,將初始化對象,並返回對象的地址。
if((ptr=mysql_real_connect(&mysql,"localhost","root","123456","wangwei",0,NULL,0))!=0) //試圖建立與運行在主機上的
MySQL
數據庫引擎的連接
。
{
printf("connected../n");
}
else
{
printf("Error connecting to database: %s/n" ,mysql_error(&mysql));
exit(1);
}
sprintf(SqlText,"insert into mydata values(%.1f,%d)", da, num); //SQL語句絕對要在mySQL中執行過後複製過來,以防有錯。
sprintf()函數 將字串格式化,做字符轉換用。
if(!mysql_query(ptr, SqlText))//執行由“Null
終結的字符串”查詢指向的SQL
查詢。成功,返回0
。
{
printf("ok/n");
}
else
{
printf("Can't insert data to table!%s/n",mysql_error(ptr));
}
mysql_close(ptr);//關閉前面打開的連接。如果句柄是由mysql_init()
或mysql_connect()
自動分配的,mysql_close()
還將解除分配由
mysql
指向
的連接句柄。
return 0;
}
補充:sprintf(SqlText,"insert into mydata values(%.1f,%d)", da, num);該語句解決了mysql_query()函數如何利用變量插入數據表的問題!
本人所用系統爲UBUNTU9.10。
守得雲開見月明