目录

Mysql连接-语言连接和图形化界面

Mysql连接—语言连接和图形化界面

语言连接

在已经具备MySQL的基础知识后,需要学习如何进行使用,要用c语言连接mysql,需要使用mysql官网提供的库,用c接口库进行连接。 准备工作: 保证mysql服务有效 在官网上下载合适的mysql connect库

1.安装Connector

在mysql.com官网: https://i-blog.csdnimg.cn/direct/c8e3dcdc5e714b11a5a68e8078204095.png 选择downloads,进入 https://i-blog.csdnimg.cn/direct/7742054f1f704de6b2639a8c143d0a7f.png 选择所需语言的连接包: https://i-blog.csdnimg.cn/direct/1a9f1299d65545fe8a2c866835077761.png 再选择与自己mysql版本和OS版本匹配的连接包 下载好后导入操作系统,通过库连接,库函数进行使用 或者若在下载mysql时,下载的是mysql-community-server则已经将连接数据库的开发包已经安装好了,或者通过apt /yum install libmysqlclient-dev安装开发包 先退回到根目录,查看/usr/include/mysql路径下的文件 https://i-blog.csdnimg.cn/direct/d43eb69eb0934e03807582ae3386017f.png 若存在mysql的头文件则表示安装开发包完成

2.测试mysql连接

创建一个.cc文件,使其包含mysql头文件,调用mysql函数: https://i-blog.csdnimg.cn/direct/3ef265a7eb3c4778b0ad9336ab589a10.png 在编译时,链接到mysql库: https://i-blog.csdnimg.cn/direct/bc387ed8a7b54bf986f5bf132bc1e3bc.png 运行可执行程序: https://i-blog.csdnimg.cn/direct/e447a39399164473aa064315485bfcd0.png 若成功调用库函数,则说明接入成功

3.MySQL接口

查看函数列表:[MySQL :: MySQL 5.7 C API Developer Guide :: 4 C API Function Reference]( reference.html “MySQL :: MySQL 5.7 C API Developer Guide :: 4 C API Function Reference”)

3.1mysql初始化:

MySQL是一套网络服务(TCP/IP),要使用需要先进行初始化 mysql_init(MYSQL * mysql) 成功返回结构体指针,失败返回nullptr 例: https://i-blog.csdnimg.cn/direct/c8f644c8b0a74b80a370a1c002b98b80.png https://i-blog.csdnimg.cn/direct/cde432ef06cd48208f86748adf2a1c7b.png https://i-blog.csdnimg.cn/direct/717e1c541a444b448c9958b3d8953ec2.png 运行后无退出码,也无报错表示初始化成功 初始化完毕之后,必须先链接数据库,才能进行后续操作:

3.2myslq链接(需要先启动mysql服务端):

MYSQL * mysql_real_connect(MYSQL *mysql,conest char *host, consh char *user, const char passwd, const char db, unsigned int port, const char *unix_socket, unsigned long clientflag); host是登陆位置,user是创建的mysql用户,passwd是用户对应的密码,db是要访问的数据库,potr是mysql服务器的端口号,unix_socket参数和clientflag设为null和0 成功返回mysql指针,失败返回null 例: https://i-blog.csdnimg.cn/direct/d58880e1fc3544aca762cdbe5849928b.png https://i-blog.csdnimg.cn/direct/3ee453fce19142298e261c9190071f8c.png 可以在数据库中查看到链接情况,在链接上后,不立刻close而是sleep10秒 链接之前: https://i-blog.csdnimg.cn/direct/747c3f5c4f654f09bb5c74e3253de9fd.png 链接之后: https://i-blog.csdnimg.cn/direct/7752e253b50f499f84a968812dc298f3.png 增加了一个链接对象。

3.3向mysql下达sql指令:

int mysql_query(MYSQL mysql,const char p); p是要指向的sql语句,如”select * form table” 返回0表示成功,非0表示失败。 通过while循环不断输入sql语句: https://i-blog.csdnimg.cn/direct/89796d20514d4792a6ba330da473e2a0.png 执行语句之前: https://i-blog.csdnimg.cn/direct/5b84f681c9fb41c2b7436dd99a461374.png 执行语句: https://i-blog.csdnimg.cn/direct/3474cadab5f741b1aea2c8625e698604.png 执行语句之后: https://i-blog.csdnimg.cn/direct/6b417f21ca13483586a7ce8d792eba3d.png 显示插入成功,sql语句执行成功。 也可以通过单条语句对数据库操作: https://i-blog.csdnimg.cn/direct/18b5c54876d54500b00cfa2996810132.png 表中数据成功被修改 https://i-blog.csdnimg.cn/direct/fa0b3ef60f0c4be6bf57312f4487efed.png 若是向表中插入中文数据: https://i-blog.csdnimg.cn/direct/74c5f1f0e3ae4e5db68e7ef723b3b4c8.png https://i-blog.csdnimg.cn/direct/457da98ad79141a8ba08405df438c695.png https://i-blog.csdnimg.cn/direct/c723dec0a45e4b6ca735cf8f6b1ef64d.png 也能插入成功,但是未经过设置可能会出现乱码问题—-客户端和服务端编码不一致 可以在链接后,设置的链接默认字符集为utf8,mysql8.0默认是utf8mb4(支持中文),而mysql5.0的默认字符集是latin1(不支持中文) 设置默认字符集为utf8的库函数: mysql_set_character_set(mysql,”utf8”); mysql是用于建立链接的MYSQL结构体的指针 也可以执行select语句,但是无结果显示: https://i-blog.csdnimg.cn/direct/4d833a53d0484c61a40482735768063d.png https://i-blog.csdnimg.cn/direct/3d29cc75bd7a4c3686c9808ad77183fd.png 因为select后,还需要获取查询到的数据—保存到MYSQL结构体内的结果集。 提取select的结果的函数: MYSQL_RES* mysql_store_result(MYSQL mysql); 返回值为MYSQL_RES结构体指针,失败返回null select的结果就转到MYSQL_RES结构体内。 MYSQL内接收的select数据并不是整张表而是其中的数据,转存到MYSQL_RES内的也不是表而是表中数据: https://i-blog.csdnimg.cn/direct/dceb9cd5246443c387812b11f6f4fd5c.png 可以将MYSQL_RES看作char* 的数组,其中的char指向的char*指向每一个行数据,有几个char就有几行,有几个char就表示有几列(一行有几个数据)。 因此通过行下标和列列进行数据查看,需要进行行数和列数的获取: 获取结果行数: my_ulonglong mysql_num_rows(MYSQL_RES res); 获取结果列数: unsigened int mysql_num_fields(MYSQL_RES res); 获取列名: MYSQL_FIELD mysql_fetch_fiedls(MYSQL_RES res); 返回值是MYSQL_FIELD类型,可以当中数组使用,如: MYSQL_FIELD fields_array=mysql_fetch_fiedls(MYSQL_RES* res); cout«ret[0].name«endl; //输出第零列的列名(配和列数进行遍历) https://i-blog.csdnimg.cn/direct/593762acdab345a0b2dcc0d9cc237346.png https://i-blog.csdnimg.cn/direct/ea7fb66dba7d41ba9bc3a1c0e9c0ad81.png 查看有几行几列,并将结果打印: https://i-blog.csdnimg.cn/direct/0af5c4b91a19454692bf38b369d48c57.png https://i-blog.csdnimg.cn/direct/029a9adf7f8844619f1ee4d3518efce9.png https://i-blog.csdnimg.cn/direct/8d6f667c0b814d05b7c97692f2f997ab.png 能查到正确的行数与列数。 拿到列名: 也有用于直接获取结果内容的函数: MYSQL_ROW mysql_fetch_row(MYSQL_RES * res); 返回一个MYSQL_ROW结构体,相当于一个char**类型的指针,拿到一行的数据,每调用一次就会通过自身的计数器拿下一行的数据,可以配合行数,列数对结果集进行遍历: https://i-blog.csdnimg.cn/direct/9c8396f6cf874b13be67ad8d2492c1ee.png https://i-blog.csdnimg.cn/direct/bc2e558799414f4795ebbc5215382d00.png

3.4释放MYSQL_RES中的结果集:

void mysql_free_result(MYSQL_RES * result); https://i-blog.csdnimg.cn/direct/7adb88f069d24dc0bd95cf7813e536b4.png

3.5关闭mysql链接:

void mysql_close(MYSQL* sock); https://i-blog.csdnimg.cn/direct/b9e8a1e974d748348ad80f070a6c7cea.png

图形化界面连接方式:

官方图形化界面推荐:MySQL workbench(mysql官网下载) 下载window版 https://i-blog.csdnimg.cn/direct/0c5c3e531a304a168158616445962ce5.png 下载好后 https://i-blog.csdnimg.cn/direct/7a5e9765ffe94495878c3690116ec7f0.png 点击+号添加链接: https://i-blog.csdnimg.cn/direct/b2f70b076464444aa80ac8c8e36a875e.png 注意:在用云服务器进行登陆时,需要将mysql服务器的端口号设置进安全组。 点击进入: https://i-blog.csdnimg.cn/direct/9d9d19055f11430b90c820e143234bb3.png 查看数据库结构 https://i-blog.csdnimg.cn/direct/b809022707d540fb80c888f899ae9167.png https://i-blog.csdnimg.cn/direct/d15e074218de4e36919516053f57521d.png 输入sql语句后,选中,点击闪电符合指向选中sql语句: https://i-blog.csdnimg.cn/direct/45539efd4d5743febda6d6ea93cd1118.png 按住ctl滚动滑轮可以进行缩放。 在select * from table_name;后可以直接在展示的表结果上进行修改插入等,通过apply进行提交,但是若表无主键,唯一键索引则不能进行这种操作,而是read only https://i-blog.csdnimg.cn/direct/8899a2e3e795476394abd36003a9dad1.png 解决方法包括为表添加主键或唯一键、使用 SQL 语句手动编辑、导出数据编辑或使用其他工具。 如果表设计允许,建议为表添加主键,以确保数据的完整性和可操作性。 添加主键后,就能对select*的结果直接进行修改: https://i-blog.csdnimg.cn/direct/9a2cb3ca364647ad9e8efbcb715b3627.png 点击apply进行提交: https://i-blog.csdnimg.cn/direct/aeeac0966d424869b9893e4d4b362361.png https://i-blog.csdnimg.cn/direct/cf8aa9e2a22a42438e1c95b0a9c69213.png 不进行使用时关闭数据库,避免被黑入。