文档章节

mORMot 使用基础

vga
 vga
发布于 2017/05/04 09:07
字数 784
阅读 47
收藏 0
点赞 0
评论 4
程序中要使用数据库,首先是引用SynCommons, SynDB单元,根据不同的数据库类型,简单举几个例子:

1 使用Access数据库,引用SynCommons, SynDB,SynOleDb三个单元,如果密码为空,设置后面三个参数直接为空就可以了.
mORMot数据库处理方式

Code (Text):

var
  gProps: TSQLDBConnectionProperties;
  rows: ISQLDBRows;
begin
  gProps := TOleDBJetConnectionProperties.Create('test.mdb', '库名', '用户名', '密码');
  rows := gProps.ExecuteInlined('select * from dm_sys',  True);
  if rows<>nil then
    while rows.Step() do
      showmessage(rows.ColumnString('value'));
end;

普通记录集处理方式,增加单元引用 SynDBMidasVCL 
Code (Text):
var
  gProps: TSQLDBConnectionProperties;
  ds: TSynDBDataSet;
begin
  gProps := TOleDBJetConnectionProperties.Create('test.mdb', '库名', '用户名', '密码');
  ds := TSynDBDataSet.Create(nil);
  try
    ds.Connection := gProps;
    ds.CommandText := 'select * from dm_sys';
    ds.Open;
    ds.First;
    while not ds.Eof do
      ShowMessage(ds.FieldByName('value').AsString);
    ds.Close;
  finally
    FreeAndNil(ds);
  end;
end;

连接不同类型数据库,仅列出引用单元和初始化代码,具体使用基本同上面的代码。

2 使用Sqlite3数据库,引用SynCommons, SynDB,SynDBSQLite3, SynSQLite3, SynSQLite3Static
连接为
gProps := TSQLDBSQLite3ConnectionProperties.Create('test.db3', '', '', '用户密码');

//Sqlite3的密码只设置最后一个参数

3 使用ZEOS可以连接不同数据库,引用SynCommons, SynDB,SynDBZeos 
A) 连接FireBird:
 gProps := TSQLDBZEOSConnectionProperties.Create(
'zdbc:firebird-2.0://127.0.0.1:3050/model?username=sysdba;'+
'password=masterkey;LibLocation=fbclient.dll', '', '', '');  

B) 连接MySql:
gProps:= TSQLDBZEOSConnectionProperties.Create(
'zdbc:mysql://127.0.0.1:3306/model?username=sysdba;'+
'password=masterkey;LibLocation=libmysql.dll', '', '', '');  

C) 连接MySql Em:
gProps:= TSQLDBZEOSConnectionProperties.Create(
'zdbc:mysqld-5:///ahoa?compress=yes;dbless=no;useresult=no;timeout=30;'+
'ServerArgument1=--basedir=./;'+
'ServerArgument2=--datadir=./data;'+
'ServerArgument3=--character-sets-dir=./share/charsets;'+
'ServerArgument4=--language=./share/english;'+
'ServerArgument5=--key_buffer_size=64M;'+
'codepage=utf8;AutoEncodeStrings=ON;controls_cp=CP_UTF16;LibLocation=.\lib\libmysqld.dll', '', '', '');

//MySql增强模式可以在程序启动时启动MySql数据库,无单独的MySql进程。
 

D) 连接Oracle: 
gProps:= TSQLDBZEOSConnectionProperties.Create(
'zdbc:Oracle:///orcl?username=sysdba;password=masterkey;'+
'LibLocation=oci64\oci.dll', '', '', '');


使用ISQLDBRows是速度最快的读取SQL 数据库的方法,如果我们写Web后台程序,这是一个极好的方法。

E) 连接MS SQL Server数据库:

type
  TForm1 = class(TForm)
mmoLog: TMemo;
btnOpen: TButton;
    procedure btnOpenClick(Sender: TObject);
  private
  public
  end;
Var
   Form1: TForm1;

implementation

uses SynDB, SynOleDB, SynCommons;

{$R *.dfm}

procedure TForm1.btnOpenClick(Sender: TObject);
var
  dbConn:  TOleDBConnectionProperties;
  rows:  ISQLDBRows;
  cServer,cDatabase,cUserId,cUserPwd:  RawUTF8;
begin
  cServer:='127.0.0.1';
  cDatabase:='SM1';
  cUserId:='sa';
  cUserPwd:='sa';
  dbConn := TOleDBMSSQLConnectionProperties.Create(cServer,cDatabase,cUserId,cUserPwd);

{
Change TOleDBMSSQLConnectionProperties.SetInternalProperties set fProviderName:='SQLOLEDB' if you don't have SQLNCLI10 installed;
 dbConn.ConnectionStringDialogExecute;
dbConn.ConnectionString:='Provider=SQLOLEDB;Data Source=127.0.0.1;Initial Catalog=SM1;User Id=xx;Password=xxxx;';
}

  mmoLog.Lines.Add(dbConn.ConnectionString);
  rows := dbConn.ExecuteInlined(ToUTF8('select * from 部组信息'), True);
  if rows<>nil then
    while rows.Step() do
      mmoLog.Lines.add(rows.ColumnString(ToUTF8('名称')));
  dbConn.Free;
end;
end.

需要说明的是1.18将TOleDBMSSQLConnectionProperties的ProviderName由SQLOLEDB改成SQLNCLI10,要正常运行,需要安装MSSQL Native Client 10的驱动,如果想让你的程序在任何机器上将能跑,打开SynOleDB.pas将TOleDBMSSQLConnectionProperties. SetInternalProperties代码片段改为fProviderName:='SQLOLEDB'即可。SQLNCLI10与SQLOLEDB都支持SQL Server 2000.  SQLOLEDB任何Windows都带,SQLNCLI10以及更高版本的SQLNCLI11需要安装驱动,驱动又分32位与64位。
上述代码的toUTF函数是为在Delphi7下编译准备的,如果是2009以上版本可以让编译器自动转换。如果要做Json序列化为utf8,可使用ColumnUTF8。

ZeOSDBO 连接上述数据库,用FreeTDS_MsSQL>=2005,连接出现character sets错误解决:
详细过程(WIN10X64环境,测试X32&X64APP)
将附件里的freetds-0.95.87\32 bits + iconv\sybdb.dll复制到C:\Windows\SysWOW64->适用X32APP;
将附件里的freetds-0.95.87\64 bits\sybdb.dll复制到C:\Windows\System32->适用X64APP。
留意最主要的设置 :

object ZConnection1: TZConnection
    ControlsCodePage = cCP_UTF16
    ClientCodepage = 'UTF8'
    Catalog = ''
    Properties.Strings = (
      'codepage=UTF8'
      'AutoEncodeStrings=ON'
      'controls_cp=CP_UTF16')
    Connected = True
    HostName = '127.0.0.1'
    Port = 0
    Database = 'ABC'
    User = 'sa'
    Password = '******'
    Protocol = 'FreeTDS_MsSQL>=2005'
    Left = 56
    Top = 72
  end

本文转载自:https://wedelphi.com/t/419278/

共有 人打赏支持
vga

vga

粉丝 19
博文 336
码字总数 23533
作品 0
佳木斯
加载中

评论(4)

vga
vga
https://wedelphi.com/t/419075/
https://wedelphi.com/t/419075/

mORMot使用基础 2 数据库连接
vga
vga
12 - SynDB Explorer
用的 连接串:
mysql://192.168.6.206:3306/dbname?username=root;password=1234567
vga
vga
implementation

uses SynDB, SynOleDB, SynCommons;

{$R *.dfm}

procedure TForm1.btnOpenClick(Sender: TObject);
var
dbConn: TOleDBConnectionProperties;
rows: ISQLDBRows;
cServer,cDatabase,cUserId,cUserPwd:RawUTF8;
begin
cServer:='127.0.0.1';
cDatabase:='SM1';
cUserId:='sa';
cUserPwd:='sa';
dbConn := TOleDBMSSQLConnectionProperties.Create(cServer,cDatabase,cUserId,cUserPwd);
//Change TOleDBMSSQLConnectionProperties.SetInternalProperties set fProviderName:='SQLOLEDB' if you don't have SQLNCLI10 installed;
//dbConn.ConnectionStringDialogExecute;
//dbConn.ConnectionString:='Provider=SQLOLEDB;Data Source=127.0.0.1;Initial Catalog=SM1;User Id=xx;Password=xxxx;';
mmoLog.Lines.Add(dbConn.ConnectionString);
rows := dbConn.ExecuteInlined(ToUTF8('select * from 部组信息'), True);
if rows<>nil then
while rows.Step() do
mmoLog.Lines.add(rows.ColumnString(ToUTF8('名称')));
dbConn.Free;
end;
vga
vga
使用ISQLDBRows是速度最快的读取SQL 数据库的方法,如果我们写Web后台程序,这是一个极好的方法。
连接MS SQL Server数据库:
Code (Text):

type
TForm1 = class(TForm)
mmoLog: TMemo;
btnOpen: TButton;
procedure btnOpenClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

uses SynDB, SynOleDB, SynCommons;

{$R *.dfm}

procedure TForm1.btnOpenClick(Sender: TObject);
var
dbConn: TOleDBConnectionProperties;
rows: ISQLDBRows;
cServer,cDatabase,cUserId,cUserPwd:RawUTF8;
begin
cServer:='127.0.0.1';
cDatabase:='SM1';
cUserId:='sa';
cUserPwd:='sa';
dbConn := TOleDBMSSQLConnectionProperties.Create(cServer,cDatabase,cUserId,cUserPwd);
//Change TOleDBMSSQLConnectionProperties.SetInternalProperties set fProviderName:='SQLOLEDB' if you don't have SQLNCLI10 installed;
//dbConn.ConnectionStringDialogExecute;
//dbConn.ConnectionString:='Provider=SQLOLEDB;Data Source=127.0.0.1;Initial Catalog=SM1;User Id=xx;Password=xxxx;'
领域驱动设计(DDD)框架--Synopse mORMot framework

Synopse mORMot framework, 原名Synopse SQLite3 Framework 。是一个Client-Server ORM和SOA框架,适用Delphi6到XE4,Win32或Win64. 可以创建从独立方案到复杂的领域驱动设计: 表示层 MVC ...

炽火 ⋅ 2013/12/03 ⋅ 3

mORMot JSon 使用(生成)

uses SynCommons; 前面的写法有内存泄漏,下面是修改好的代码:

vga ⋅ 2016/09/16 ⋅ 2

mORMot Js对象解析 Json 实例

Json 文件内容(Ansing 格式 ):

vga ⋅ 2016/09/15 ⋅ 0

C#数学计算包 Math.NET

1.Math.NET基本介绍 Math.NET官方网站:http://www.mathdotnet.com/ Math.NET的目标是为提供一款自身包含清晰框架的符号运算和数学运算/科学运算,它是C#开发的开源类库。Math.NET含了一个支...

CSharpKit ⋅ 2017/12/18 ⋅ 0

linux从小白到linux资深专家之路

linux从小白到linux资深专家之路 为什么学Linux,理由如下: Linux是免费; Linux是开源的,你可以修改源代码; Linux是开放的,有广泛的社区; 学习Linux可以更好的掌握计算机技术; Linux是...

lxm111111 ⋅ 2016/07/16 ⋅ 0

欢迎进入Hensen_的博客目录(全站式导航)

Android基础 Java基础 Java基础——Java内存模型和垃圾回收机制 语法基础 语法基础——C语法基础 语法基础——C++语法基础 语法基础——Objective-C语法基础 语法基础——PHP语法基础 面试复...

qq_30379689 ⋅ 2016/09/23 ⋅ 0

大数据实验室(大数据基础培训)——概要

为某企业做的培训,完整文档见:http://gudaoxuri.github.io/bd-lab/ 1. 概要说明 本工程为大数据培训的指导教程,包含了培训实践各个环节的说明及相关代码。 1.1. 课程概要 名称 内容 第一天...

孤岛旭日 ⋅ 2016/05/06 ⋅ 0

【思路】混合云与多云管理进入架构时代!

混合云融合了公有云和私有云,是近年来云计算的主要模式和发展方向。我们已经知道私企业主要是面向企业用户,出于安全考虑,企业更愿意将数据存放在私有云中,但是同时又希望可以获得公有云的...

English0523 ⋅ 2017/08/08 ⋅ 0

Android 官方 MVP 架构示例--Android 架构蓝图

Google 推出的一个项目,专门展示 Android 引用各种各样的 MVP 架构。 目前已经完成的示例有 todo-mvp(mvp 基础架构示例) todo-mvp-loaders(基于 mvp 基础架构项目,获取数据部分使用了 ...

匿名 ⋅ 2017/01/11 ⋅ 0

为一个REST服务使用Spring Security的基本和摘要认证

原创翻译自:http://www.baeldung.com/2011/11/20/basic-and-digest-authentication-for-a-restful-service-with-spring-security-3-1/ 简介 这篇文章讨论的是如何在一个相同URI结构的REST ......

BuWStudio ⋅ 2014/01/16 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

从方法论到零售客户实践 解码阿里巴巴数据中台——2018上海云栖大会

摘要: 一、数据中台之道 6月8日,上海云栖大会进入了第二天的议程,数据中台专场论坛座无虚席,数据中台总架构师邓中华女士向在场的观众介绍了数据中台的衍生发展之道。 基于OneID、OneData...

阿里云云栖社区 ⋅ 21分钟前 ⋅ 0

Ubuntu部署django问题汇总

使用Anaconda3的Python3.6的pip安装UWSGI报错 原因是gcc版本不兼容,安装4.7并修改gccsudo apt-get install gcc-4.7sudo mv /usr/bin/gcc /usr/bin/gcc.baksudo ln -s /usr/bin/gcc-4.......

wuyaSama ⋅ 24分钟前 ⋅ 0

从方法论到零售客户实践 解码阿里巴巴数据中台——2018上海云栖大会

摘要: 一、数据中台之道 6月8日,上海云栖大会进入了第二天的议程,数据中台专场论坛座无虚席,数据中台总架构师邓中华女士向在场的观众介绍了数据中台的衍生发展之道。 基于OneID、OneData...

猫耳m ⋅ 24分钟前 ⋅ 0

Docker减肥小记

如果经常使用 docker,你会发现 docker 占用的资源膨胀很快,其中最明显也最容易被察 如何快速的清理 docker 占用的系统资源,具体点说就是删除那些无用的镜像、容器、网络和数据卷… 1、查看...

寰宇01 ⋅ 35分钟前 ⋅ 0

微信小程序中如何使用WebSocket实现长连接(含完整源码)

本文由腾讯云技术团队原创,感谢作者的分享。 1、前言 微信小程序提供了一套在微信上运行小程序的解决方案,有比较完整的框架、组件以及 API,在这个平台上面的想象空间很大。腾讯云研究了一...

JackJiang- ⋅ 43分钟前 ⋅ 0

定制库到Maven本地资源库

1.如果只有定制库的JAR文件 下载链接如下:pdf.jar 2.使用命令转换成Maven本地资源 mvn install:install-file -Dfile=/Users/manager/Downloads/clj-pdf-2.2.33.jar -DgroupId=clj-pdf -Dar......

年少爱追梦 ⋅ 47分钟前 ⋅ 0

高仿springmvc之xuchen-mvc

package org.mvc.framework.servlet; import java.io.BufferedReader; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.......

徐志 ⋅ 49分钟前 ⋅ 0

关于自定义URLStreamHandler的一次踩坑

关于自定义URLStreamHandler的一次踩坑 20180625 lambo init 说明 一般自定义实现url的协议解析.方案为实现URLStreamHandler.实现其 openConnection 就可以了, 如果我们执行 new URL("xx://...

林小宝 ⋅ 50分钟前 ⋅ 0

【SM2证书】利用BC的X509v3CertificateBuilder组装X509国密证书

演示证书文件 链接: https://pan.baidu.com/s/1ijHNnMQJj7jzW-jXEVd6Gg 密码: vfva 所需jar包 <!-- https://mvnrepository.com/artifact/org.bouncycastle/bcpkix-jdk15on --> <dependenc......

小帅帅丶 ⋅ 51分钟前 ⋅ 0

用Calendar 实现 计算 一段时间的毫秒值

Calendar c=Calendar.getInstance();c.add(Calendar.MONTH, -1);int lastMonthMaxDay=c.getActualMaximum(Calendar.DAY_OF_MONTH);c.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH)......

岸芷汀兰 ⋅ 55分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部