MySQL的Connector操作数据库

1,前言

  1. 近来在写一个记账程序,温习了下MySQL的Connector驱动,特记录备忘。

2,配置开发环境

  1. C语言要去MySQL官网下载Connector/C解压到你需要的位置,然后编译时加 -I 和 -L 来寻找资源编译软件。
  2. Python3下使用 pip install mysql-connector-python 来安装开发包。

3,Python3的代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// Python3连接操作MySQL
import mysql.connector

# 初始化并连接数据库
conn = mysql.connector.connect(host='', port='3306', user='', password='', database='', charset='utf8')
cursor = conn.cursor()

# 执行插入语句并输出写入行数
# 插入语句后记得提交事务
cursor.execute("INSERT INTO account ( DATE, CR, DR, SUM, NOTE) VALUES ( CURRENT_DATE(), '1004', '3001', '5', '示例')")
conn.commit()
print("写入行数:", cursor.rowcount, "\n")

# 执行查询语句
cursor.execute("SELECT * FROM account")

results = cursor.fetchall()
for row in results:
ID = row[0]
DATE = row[1]
CR = row[2]
DR = row[3]
SUM = row[4]
NOTE = row[5]
print("%s \t%s \t%s \t%s \t%s \t%s" % (ID, DATE, CR, DR, SUM, NOTE))

cursor.close()
conn.close()

4,C语言的代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
// Windows下C语言连接操作MySQL
#include <stdio.h>
#include <winsock.h> // linux下可省略这个头文件
#include <mysql.h>

int main(int argc, char *argv[])
{
// 初始化并连接数据库
MYSQL *test = mysql_init(NULL);
test = mysql_real_connect(test, "HOST", "USER", "PASSWD", "DATABASES", 3306, 0, 0);

// 解决输出中文乱码
mysql_query(test, "SET NAMES gbk");

// 执行查询语句
mysql_query(test, "SELECT * FROM account");

// 获取离线到内存中的结果
MYSQL_RES *result = mysql_store_result(test);
MYSQL_ROW row;

// 将查询结果以表格输出,mysql row里面输出的都是字符串类型
while ( row = mysql_fetch_row( result ) )
{
printf("\n%s\t%s\t%s\t%s\t%s\t%s", row[0], row[1], row[2], row[3], row[4], row[5], row[6]);
}

// 释放查询结果
mysql_free_result(result);
// 关闭连接
mysql_close(test);

return 0;
}

5,注意:

  1. 编译命令为:gcc test.c -o test.exe -IC:\Soft\Mingw64\mysql\include -LC:\Soft\Mingw64\mysql\lib -lmysql
  2. MySQL头文件目录:C:\Soft\Mingw64\mysql\include
  3. MySQL头库件目录:C:\Soft\Mingw64\mysql\lib
  4. 32位GCC只能用32位的MySQL驱动,64位亦然,否则ld会找不到libmysql
  5. 由于篇幅问题,上面代码并没有写规范,望见谅。