理解MHS(3):数据库-数据库连接

数据库连接:
数据库连接是在config.ini中配置的,一旦配置则不能随意更改,更改后则需要重启MHS才能应用更改。正常的配置像这样:

[Database0]
Name=Default
Connection=Provider Name=SQLite;Database=.\dbdemos.db3;Login Prompt=False;Direct=True
MaxPoolSize=1

一、配置说明

这里面有三个值,需要特别说明:

1.Name,很关键,当有多个数据库连接时,根据该字符串进行查找需要的数据库连接。
2.Connection,连接字符串,更多解释请参考QA.txt中的说明。
3.MaxPoolSize,最大连接数,因为MHS内置了数据库连接池,所以该值直接影响着执行性能,一般情况下8个连接足够使用,也可以根据自己需要进行修改,当然,对于文本型数据库(Access和Sqlite),该值无用。

二、多个数据库

当需要多个数据库连接时,您可以这样定义更多的数据库连接,注意段名称的变化:

[Database1]
Name=DB1
.....

[Database2]
Name=DB2
.....

 

三、数据库高级功能

1.事务能力
我们知道数据库连接可以对事务进行操作,这也是非常关键的内容,为了保持数据库连接的纯洁性和开发的方便性,该功能被赋予给了TwmQuery,因此,正常的事务操作类似下面内容(该内容来自于Lessons\Lesson9内容,请自行参考):

function TestTransaction: Boolean;
var
  AQuery: TWmQuery;
begin
  AQuery := wm.NewQuery('');
  
  try
    AQuery.StartTransaction;
    try
      AQuery.SQL.Text := 'Update employee Set Salary=Salary + 100';
      
      AQuery.Execute;
      
      if AQuery.InTransaction then
      begin
        AQuery.Commit;
        
        Result := True;
      end;
    except
      on E: Exception do
      begin
        AQuery.Rollback;
      end;
    end;
  finally
    FreeAndNil(AQuery);
  end;  
end;

也就是说,每个TWmQuery都可以开启和终止当前的事务,这种控制非常方便也非常灵活,因此请根据需要自行控制。

2.指定数据库连接
如上代码:

  AQuery := wm.NewQuery('');

 

wm.NewQuery方法接受两个参数,第一个参数为AQuery的名字,默认为空,第二个参数为数据库名称,默认为空(即使用config.ini中的首个数据库配置),当指定第二个参数时则使用指定的数据库,例如:

  AQuery := wm.NewQuery('', 'DB1');

 

该代码使用config.ini中数据库配置Name=DB1的数据库连接。有关该部分内容,请参考TwmQuery的描述。
这样就可以在同一个应用中使用多个具有连接池功能的数据库。

3.获取数据库中的所有表名称

AQuery.GetTableList;

返回值为字符串,该字符串以回车换行分割。

 

四、支持的数据库

 

只支持四种数据库,链接字符串如下所示:注意,此处只是示例,示例!!!

4.1 Access:

[Database0]
Name=Default
Connection=Provider Name=Access;Database=.\dbdemos.mdb;Login Prompt=False
MaxPoolSize=1

4.2 Sqlite,must use Direct=True to avoid memory leak.
[Database0]
Name=Default
Connection=Provider Name=SQLite;Database=.\dbdemos.db3;Login Prompt=False;Direct=True;Use Unicode=True
MaxPoolSize=1

4.3 SQL Server
[Database0]
Name=BBS
Connection=Provider Name=SQL Server;Data Source=.;Initial Catalog=td_blog;Port=8829;User ID=sa;Password=admin;Login Prompt=False
MaxPoolSize=32

4.4 MySQL
[Database0]
Name=Test
Connection=Provider Name=MySQL;User ID=root;Password=;Data Source=localhost;Database=test;Port=3306;Login Prompt=False
MaxPoolSize=32

=================

有关本节详细内容可以参考Lessons\Lesson9\index.pp中的内容。

0 Comments
因网站受黑客垃圾攻击,留言暂时关闭,如有需要,请自行下载源码参考,谢谢。
留言