Lazarus连接MSSQLServer有两种方式,一种是自带的ODBCConnection,一种是使用第三方控件。
其自带的MSSQLConnection和SQLConnector不能直接连接MSSQLServer数据库,无论怎么设置都是白费劲,提示External:ACCESS VIOLATION。如果有成功的高手请赐教一下。但是SQLConnector也可以通过ODBC连接。
第三方控件我测试了两个,一个是zeosdbo一个是SDAC,感觉后一个比较好用。
SDAC在使用SQLServer时,Nvarchar(MAX)字段显示异常,需要在MSQuery的属性DataTypeMap中设置NText-->Memo映射一下(options--dgdisplaymemotext=true)。或者直接用字段名映射字段类型。zeosdbo一直没有找到方式。
zeosdbo连接SQLServer时,sql语句使用汉字表名需要加上引号[]才可以识别,否则显示乱码并提示错误。。
另外,Lazarus中使用属性时,发现自动提示的属性或方法后面有的加了一把小锁,不知何意,使用时发现有时不能正常的反馈结果,难道是受限制或和其他属性一并使用的提示?一直没有弄明白。比如SqlQuery1.RecordCount;自动提示的Prepared属性后有一把小锁,反馈的结果不是实际的计数,第一次是20,再刷新可能会显示实际计数,这是在PacketRecord:=-1的情况下出现的问题。尝试用Rowsaffected,可以显示正确计数。这个和Delphi中的Adoquery不一样。
另外,在3.0RC1和2.2.6版本,你想用拼音录入 //显示全部 时,当联想显示过程到 //县市区 后,系统自动退出。直接录入 //县市区 没有问题。测试后,微软的拼音录入没问题,手心录入法有问题。可能是软件冲突。
初学,暂时写这么多吧,以上有误请指正。
2023.10.23补充
感谢码友Q315054403提供MSSQL驱动控件,已经可以使用MSSQLConnection连接数据库,这个连接还解决了UTF8的乱码问题,非常感谢!