PowerBuilder 真是一门古老的语言,所以有些技术,真的很难寻找,因为用的人实在是太少。
目前来说,笔者暂时还没找到PB直连Sqlite的办法,后来通过ODBC连接Sqlite ,但总是出现中文乱码,经过笔者花了好几天没日没夜的寻找了N篇国内外文章,终于找到一个合适的ODBC工具,当然中文也不会出现乱码。
出现乱码的原因:
1、sqlite编码是uft8,
2、PB是ANSI,如果从Sqlite数据库取出一个字段的值直接显示会出现乱码
简单处理方式:我用这种方式格式化后显示string(blob(ls_username,EncodingANSI!),EncodingUTF8!),就不显示乱码了。
最终解决办法:下载一个Sqlite的ODBC驱动
string ls_dbparm, ls_dbfile, ls_exepath, ls_file[] ls_dbfile = c:\temp\sqlite.db3' IF Fileexists(ls_dbfile) THEN // do nothing ELSE IF GetFileOpenName('Select Data File',ls_dbfile, ls_file,'db3','SQLite files (*.db3),*.db3') < 1 THEN Messagebox('No Data File Chosen','Application will close') HALT CLOSE END IF END IF // SQLite connection ls_dbparm = "ConnectString='" // Driver installed with SQLite2009 Pro Enterprise Manager ls_dbparm = ls_dbparm + "DRIVER=SQLite2010 Pro ODBC Driver;" ls_dbparm = ls_dbparm + "Database=" + ls_dbfile + "'" ls_dbparm = ls_dbparm + "UID=" + "admin" + ";PWD=" ls_dbparm = ls_dbparm + "'" sqlca.DbParm=ls_dbparm sqlca.DBMS = "ODBC" CONNECT USING SQLCA; IF (sqlca.sqlcode) <> 0 THEN MessageBox("Database Log On Error","Failed to Connect to Database" +string(sqlca.sqlcode)+" "+sqlca.DBparm + sqlca.sqlerrtext) HALT CLOSE END IF
通过上面连接代码,就完美解决了中文乱码的问题。
Sqlite的ODBC驱动下载地址:
SQLite2009 Pro Enterprise Manager (FREE)
当时原文放出来的ODBC连接驱动还下载不了,后来通过Google搜索到了此ODBC驱动可下载网络 https://sqlite2009-pro.software.informer.com/