免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1353 | 回复: 0
打印 上一主题 下一主题

ZT 请教:BCB+MYSQL API [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-02-15 11:06 |只看该作者 |倒序浏览
我现在在做一个东东,开发工具用BCB,数据库用MYSQL。
在工程设置中加入了mysql的路径,即include和lib\debug的路径
主窗口.cpp中加入:
#include
typedef unsigned int SOCKET;
但是在程序中连接,下面的语句出错:
MYSQL mysql;
mysql_init(&mysql);
提示错位为:unresolved function "mysql_init()"
大概如此,具体的内容我不大记得清楚了,请问我还该做些什么才能成功?
另外,搭车问一下,如果做出来的这个东东随着硬件销售(单机版),MYSQL要注册吗?如果要注册的话,大概费用是多少?
请各位高手指点!谢谢!
问问楼上
我一直想知道BCB和Delphi如何访问MySQL
求教
问题已经解决一部分,我把数据库换回到MySQL 4.1就可以用API直接联结了,我想可能是因为5.0的dll文件所使用的VC编译器比较新,编译出来的dll文件implib无法正确导出.lib文件,导致BCB6无法识别。
to huapuyu(花璞玉) :
1、安装MySQL 4.1并正确设置
2、
在MySQL安装目录下寻找lib\debug\或者lib\opt,两个目录下都有libmysql.dll和libmysql.lib,该动态链接库
就是我们BCB所要调用的东东,但是由于该DLL是用VC编译的,与BCB的DLL格式不同,所以需要使用implib工具重新导出
libmysql.lib,在命令行模式下格式为:
    c:\>implib NewName.lib libmysql.dll
3、将刚才新导出的NewName.lib文件拷贝到你所创建的应用程序目录下
4、在BCB菜单下选择:project->Add to Project,然后在弹出的文件对话框中选择NewName.lib
5、在BCB菜单下选择:project->Option->Directories/Conditionals,将MySQL的include和lib目录追加到里面,比如我的是:
include path: (原有内容);C:\Program Files\MySQL\MySQL Server 4.1\include
Library path: (原有内容);C:\Program Files\MySQL\MySQL Server 4.1\lib\debug
        或者:(原有内容);C:\Program Files\MySQL\MySQL Server 4.1\lib\opt
在上面Library path你可以选择一个,这最好与你所导出的.lib文件目录一致
6、在你要使用API的Form页面的.cpp文件首部加上:
   #include
该.h文件是对API函数和类型的说明
7、在VC中MySQL使用了SOCKET宏,所以在BCB中要追加说明
   typedef unsigned int SOCKET;
如果没有这一条说明,编译也会出错
8、OK,检察你其他的代码,然后使用MySQL C API函数验证一下吧。
为了能够很好的支持中文字符,我以root身份在命令行客户端中输入了以下内容:
SHOW VARIABLES LIKE "%char%";
SET CHARACTER_SET_CLIENT = gbk;
SET CHARACTER_SET_CONNECTION = gbk;
SET CHARACTER_SET_DATABASE = gbk;
SET CHARACTER_SET_RESULTS = gbk;
SET CHARACTER_SET_SERVER = gbk;
SHOW VARIABLES LIKE "%coll%";
SET COLLATION_CONNECTION = gbk_bin;
SET COLLATION_DATABASE = gbk_bin;
SET COLLATION_SERVER = gbk_bin;
甚至后面我还COMMIT了一下(不知道是否要如此提交,以及如何提交),当时再次查询确实已经更改了,但是等到下次登录的时候,这些字符设置又都变成了latin,而且不管是当时还是二次登录中文字符都是"??????"不知道问题出在了什么地方,请各位高手指点一下。
谢谢楼主
不好意思
你本是需要解决问题
但变成帮我解决问题
不好意思
万分谢谢
1
typedef unsigned int SOCKET;
应该放在
#include
之前。
2
unresolved function "mysql_init()"说明没有正确地链接lib。我也是用implib生成BCB格式的lib,可以正确链接的(MYSQL 5.0)
3
对于中文字符集,可以试试修改my.ini(时间长了不知道文件名有没有搞错),服务段和客户段可能都要改吧。不过以前我不是这样做的,我的做法是字符集采用缺省latin,用程序插入和查询中文都是正确的,但是用客户端查询就是一堆乱码,尽管如此不影响程序就行。
3
对于中文字符集,可以修改  my.ini 内容如下:
[WinMySQLAdmin]
   Server=D:/mysql/bin/mysqld-nt.exe
   
[mysqld]
   basedir=D:/mysql
   datadir=D:/mysql-data/data
   default-character-set=gbk
   
[client]
   default-character-set=gbk
注意替换成你自己的路径
my.ini文件我也改了,两个default_character_set都设置为gbk,但启动服务后,发现还是有几个latin,用SET命令修改后再次登录问题依旧。
现在我是每次登录后都执行这几个SET命令,查询和写入都正常,但有没有一劳永逸的办法?请教!
my.ini文件改了以后创建的新表就没有问题了。
你重新创建一下。
至少我没遇到问题
你别说没重启机器把?
没有重启机器,只是关闭服务然后再开启。。。
我下去试试看,谢谢
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/14014/showart_478564.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP