第一步,安全 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