lazarus里连接mysql5.7用法

lazarus
跨平台free pascal语言ide工具
http://www.fpccn.com/ 社区

下载ftp://freepascal.dfmk.hu/pub/lazarus/releases
https://sourceforge.net/projects/lazarus/files/

首先到官网找到的代码,然后试着运行,发现有些不对,就试着修正了适应最新版本,中文汉化了

现在找到的方法发现lazarus链接mysql跟版本有关,找到最新版本是TMySQL57Connection

更高版本mysql这种方法估计不行,用mysql的库跟编译32位或64位有关系,而官网早就更高版本了,低版本的很不好找

if MySQLConnection1.Connected then begin
    SQLTransaction1.Active := False;
    MySQLConnection1.Close;
  end;
  // Set the connection parameters.
  MySQLConnection1.HostName := HostEdit.Text;
  MySQLConnection1.UserName := UserEdit.Text;
  MySQLConnection1.Password := PasswdEdit.Text;
  MySQLConnection1.DatabaseName := DbEdit.Text; // MySQL is allways there!
  MySQLConnection1.CharSet:='utf8'; 
  ShowString('Opening a connection to server: ' + HostEdit.Text);
  MySQLConnection1.Open;
  // First lets get a list of available databases.
  if MySQLConnection1.Connected then begin
    ShowString('Connected to server: ' + HostEdit.Text);
    ShowString('Retreiving list of available databases.');
    StatusBar1.SimpleText:='Connected to server: ' + HostEdit.Text;
    //SQLQuery1.SQL.Text := 'SET NAMES utf8;';
    //SQLQuery1.ExecSQL();
    SQLQuery1.SQL.Text := 'show databases';
    SQLQuery1.Open;
    while not SQLQuery1.EOF do begin
      DatabaseComboBox.Items.Add(SQLQuery1.Fields[0].AsString);
      SQLQuery1.Next;
    end;
    SQLQuery1.Close;
   ShowString('List of databases received!');
  end;  

MySQLConnection1.CharSet:='utf8'; 是我后来摸索的,有了它,数据库出来的中文就能正常显示不乱码

为了正常显示时间字段类型,在form的create里设置一下 即可

FormatSettings.ShortDateFormat := 'yyyy-mm-dd';
  FormatSettings.LongTimeFormat := 'hh:nn:ss';   

假如网上找到的mysql库是32位,lazarus必须编译32位的exe才可调用

假如安装lazarus-1.8.4-fpc-3.0.4-win64.exe,必须再安装lazarus-1.8.4-fpc-3.0.4-cross-i386-win32-win64.exe即可再编译32位应用

假如安装lazarus-2.0.10-fpc-3.2.0-win32.exe,就再安装lazarus-2.0.10-fpc-3.2.0-cross-x86_64-win64-win32.exe即可再编译64位

一般情况下就不要费劲多目标编译了,在deepinlinux下装的64位,

http://mirrors.ustc.edu.cn/mysql-ftp/Downloads/MySQL-5.7/

下载了libmysqlclient20_5.7.29-1debian9_amd64.deb装上了运行库

windows下下载较新的mysql5.7安装包装上6.1.X的dll,真是有点懵,后来找网上其他地方5.7.10的安装包得到了5.7的dll

lazarus也许有什么办法忽略版本校验或其他方法,以后在研究,暂时用用就行了

完善后的代码可下载:https://download.csdn.net/download/qiaozhangchi/12716258

----------------------

补充一下:在win linux下都是库很容易搞定,到了macos找不到库加载不了库,安装了mysql把/usr/local/mysql/lib下库放到本工程目录,启动程序就是加载失败?把路径加入系统环境变量路径是可以成功,打开终端运行命令也可以?

然后灵机一动,这不就是当前目录的问题吗?然后启动时取可执行文件路径设置工作目录,ok成功了

SetCurrentDir(ExtractFilePath(Application.ExeName));

win下默认就是当前路径工作目录,macos是把程序包装成xx.app目录,所以有点不一样

你可能感兴趣的:(lazarus,lazarus,pascal,mysql)