用C語言連結mysql資料庫
阿新 • • 發佈:2019-01-11
第一步,安全 mysql資料庫,包括伺服器和客服端,另外C語言還需安裝底層mysql介面:
sudo apt-get install libmysqlclient-dev
第二步,在Ubuntu輸入命令列判斷資料庫是否正常開啟:
mysql -u root -p
第三步,需要通過命令列建立資料庫,便於以後連結
CREATE DATABASE Sign_db
當然可以可以通過C程式碼建立
#include <mysql.h> #include <string.h> #include <stdio.h> #include <stdlib.h> int main(int argc, char **argv) { MYSQL *con = mysql_init(NULL); if (con == NULL) { fprintf(stderr, "%s\n", mysql_error(con)); exit(1); } if (mysql_real_connect(con, "localhost", "root", "123456", NULL, 0, NULL, 0) == NULL) { fprintf(stderr, "%s\n", mysql_error(con)); mysql_close(con); exit(1); } if (mysql_query(con, "CREATE DATABASE Sign_db")) { fprintf(stderr, "%s\n", mysql_error(con)); mysql_close(con); exit(1); } mysql_close(con); exit(0); }
第四步,連結資料庫,並新增資料
#include <mysql.h> #include <stdio.h> #include <stdlib.h> #include <string.h> void finish_with_error(MYSQL *con) { fprintf(stderr, "%s\n", mysql_error(con)); mysql_close(con); exit(1); } int keep_sign(char **sign,int number) { MYSQL *conn= mysql_init(NULL); if (conn == NULL){ fprintf(stderr, "%s\n", mysql_error(conn)); exit(1); } int res,i; int len = strlen(sign[0]); char *st = "INSERT INTO Signature(id,sign_value) VALUES(%d,'%s')"; size_t str_len = strlen(st); char *query = (char *)malloc(str_len+2*len + 1) ; //string char * data = (char * )malloc(len*2 + 1); int length; if(mysql_real_connect(conn, "localhost", "root", "123456", "Sign_db", 0, NULL, 0) == NULL){ fprintf(stderr, "%s\n", mysql_error(conn)); mysql_close(conn); exit(1); } printf("Connection success\n"); if(mysql_query(conn,"DROP TABLE IF EXISTS Signature")){ finish_with_error(conn); } if (mysql_query(conn, "CREATE TABLE Signature(Id INT, sign_value TEXT)")) { finish_with_error(conn); } for(i = 0;i < number;i++){ mysql_real_escape_string(conn, data, sign[i], len); length = snprintf(query, str_len + 2*len+ sizeof(int)+1, st,i,data); //printf("query = %s\n",query); res = mysql_real_query(conn,query,length); } if(!res) printf("Inserted %lu rows\n",(unsigned long)mysql_affected_rows(conn)); else finish_with_error(conn); mysql_close(conn); free(query); free(data); return 1; } void main(){ char *p[]={"afdfdsafdskfjkdsfjds","12345674566732165434","84234399787483246614"}; keep_sign(p,3); }
編譯:
gcc -o test_mysql test_mysql.c -I.... -lmysqlclient -g