FireDAC连接数据库

从其它平台迁移而来 建立DataModule 在FireDAC选项卡中找到我们的主角TFDConnection控件,并放到DataModule窗体上,把LoginPrompt设为False,这样在连接时就不会弹出登陆对话框了。然后再找到TFDManager控件,也放到DataModule窗体上,并且把Active属性设为True,这样一来,在引用了本单元的其它单元中,就可以直接把FireDAC控件的Connection连接到本单元的TFDConnection了。 在FireDAC Links选项卡中找到所需要连接的数据的驱动链接控件,放到DataModule窗体上。本例中使用的是FireBird数据库,因此就选择了TFDPhysFBDriverLink,其它数据库参照执行(本人接触的数据库不多,各数据库间的差异不敢妄言,但整体使用思路和方法应是不差的)。 在FireDAC UI选项卡中找到TFDGUIxWaitCursor控件,放到DataModule窗体上。该控件其实只是个光标,可修改ScreenCursor属性来改变光标。 至此,拖控件的工作基本上就做完了,下面该写代码了(虽然代码中有相当一部分工作可以直接在设计器中修改属性来达到,但建议用代码来实现,一方面便于DEBUG,另一方面也易于进行数据库的变更、迁移等)。 在DataModule的Create事件中写入类似以下的代码(也可写在其它地主,但要保证必须在任何数据库操作代码前运行): 1 2 3 4 5 6 7 8 9 10 11 12 FDPhysFBDriverLink1.VendorLib := DllPath + 'fbclient.dll'; FDConnection1.Params.DriverID := 'FB'; FDConnection1.Params.Database := HostName + '/' + DBPort + ':' + DBFilePathAndName; FDConnection1.Params.UserName := UserName; FDConnection1.Params.Password := Password; FDConnection1.Params.Add('CharacterSet=utf8'); try FDConnection1.Open(); except on E:Exception do ShowMessage(E.Message); end; 注意:FDConnection1.Params.Add('CharacterSet=utf8');这句是设置客户端连接数据库是默认使用的字符集,一定要与所连接的数据库使用的默认字符集一致,否则将会发生很多奇怪的事情。而且该项无法在设计器的属性中进行设置!

2017-11-22 11:25:47 · 1 分钟 · 慢步道人

深入Delphi的字符串类型

从其它平台迁移而来 探索 之前提到了Delphi的字符串,但并未展开说,这里就详细探讨下Delphi的字符串类型。 废话不多说,直接上源码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 program StringTest; {$APPTYPE CONSOLE} uses SysUtils; var s1, s2, s3: string; begin Writeln('Now time : ',FormatDateTime('HH:MM:SS....

2017-08-15 23:17:53 · 2 分钟 · 慢步道人

Delphi中的数据类型

从其它平台迁移而来 之前一直使用的是Delphi 7,现在准备转向Delphi XE7,据说数据类型上有一些微小的调整,便想亲自验证一下,也顺便加深一下自己对Delphi数据类型的认识,毕竟之前仅仅是在用而从未考虑过类型在内存中的形态。 验证方法很简单,就是在控制台用Sizeof()把相应数据类型的字节数显示出来。源码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 program TypeSize; {$APPTYPE CONSOLE} uses SysUtils; type Emnu = (one, two, three, four); Range1 = $0....

2017-08-13 14:34:21 · 3 分钟 · 慢步道人