函数
连接数据库:
mysql_real_connect(xxxx,"主机名或IP地址","当前用户的登录名","密码",数据库名称,Unix 套接字这里默认为NULL,端口号,flag)
如果连接成功,返回MYSQL*连接句柄。如果连接失败,返回NULL。对于成功的连接,返回值与第1个参数的值相同。
执行数据库语句:
int mysql_real_query(MYSQL *mysql, const char *query, unsigned int length);
如果查询成功,返回零。如果发生一个错误,返回非零。
存储执行的操作的结果:
MYSQL_RES *mysql_store_result(MYSQL *mysql);
将结果赋值给 MYSQL_RES *xxx的变量。
取得一行的数据:
MYSQL_ROW mysql_fetch_row(MYSQL_RES *result);
检索结果集的下一行。在mysql_store_result()之后使用时,如果没有要检索的行,mysql_fetch_row()返回NULL。
在mysql_use_result()之后使用时,如果没有要检索的行或出现了错误,mysql_fetch_row()返回NULL。
结果集的列数目由mysql_num_fields(result)给出。如果行中保存了调用mysql_fetch_row()返回的值,将按照row[0]到row[mysql_num_fields(result)-1],访问这些值的指针。行中的NULL值由NULL指针指明。
可以通过调用mysql_fetch_lengths()来获得行中字段值的长度。对于空字段以及包含NULL的字段,长度为0。通过检查字段值的指针,能够区分它们。
取得列的信息:
MYSQL_FIELD *mysql_fetch_field(MYSQL_RES *result);
返回采用MYSQL_FIELD结构的结果集的列。重复调用该函数,以检索关于结果集中所有列的信息。未剩余字段时,mysql_fetch_field()返回NULL。
每次执行新的SELECT查询时,将复位mysql_fetch_field(),以返回关于第1个字段的信息。调用mysql_field_seek()也会影响mysql_fetch_field()返回的字段。
如果调用了mysql_fetch_field()以请求BLOB字段的长度,MySQL将返回默认的Blob长度(8KB)。之所以选择8KB是因为MySQL不知道BLOB的最大长度。应在日后使其成为可配置的。一旦检索了结果集,field->max_length将包含特定查询中该列的最大值的长度。
mysql_free_result()用于释放存储操作结果的内存
关闭数据库:
void mysql_close(MYSQL *mysql);
实验
编写一个 mysql_create.c , 实现mysql创建数据表和插入数据的功能:
#include
#include
#include
#include
int main(int argc, char *argv[]) {
MYSQL pSql;
MYSQL *pMysql = NULL;
mysql_init(&pSql);
pMysql = mysql_real_connect(&pSql, "localhost", "root", "123456", "", 3306, NULL, 0);
if (pMysql == NULL) {
printf("connect mysql is error!\n");
}
// 创建数据库
char createDataStr[] = "CREATE DATABASE testMysql";
int ret = mysql_real_query(&pSql, createDataStr, strlen(createDataStr));
if (ret == 0) {
MYSQL mySql;
MYSQL *pTempSql = NULL;
mysql_init(&mySql);
pTempSql = mysql_real_connect(&mySql, "localhost", "root", "123456", "testMysql", 3306, NULL, 0);
if (pTempSql != NULL) {
// 建表语句
char createTableStr[] = "CREATE TABLE PERSONINFO (ID INTEGER(10) NOT NULL, NAME CHAR(10) NOT NULL,SEX CHAR(5) NOT NULL,PHONE INTEGER(12) NOT NULL,INSERTTIME DATETIME)";
ret = mysql_real_query(&mySql, createTableStr, strlen(createTableStr));
if (ret == 0) {
// 插入数据库
char insertDataStr[] = "INSERT INTO PERSONINFO(ID,NAME,SEX,PHONE,INSERTTIME) VALUES (1,'ISMILELI','man',110,now());";
ret = mysql_real_query(&mySql, insertDataStr, strlen(insertDataStr));
if (ret == 0) {
printf("insert ISMILELI info is success!\n");
} else {
printf("insert ISMILELI info is failure!\n");
}
} else {
printf("mysql_real_query():%s\n", mysql_error(&mySql));
return -2;
}
}
mysql_close(&mySql);
} else {
printf("mysql_real_query():%s\n", mysql_error(&pSql));
return -1;
}
mysql_close(&pSql);
printf("MySQL Complete!\n");
return 0;
}
编译:
gcc -o mysql_create mysql_create.c -I /usr/include/mysql/ -L /usr/local/mysql/lib -lmysqlclient