XAMPP連結SQL SERVER方式

XAMPP(也有免安裝版本) 是目前Windows上面最熱門的php開發環境套件,唯一美中不足的是無法連結MS SQL。至於有沒有解決方式?當然是有的囉!

一、先看一下目前XAMPP的phpinfo(),看到without-mssql…..一開始有點嚇到!不過別警張

二、到微軟網站下載Microsoft Drivers for PHP for SQL Server,對應的版本是

  • Version 3.2 supports PHP 5.6, 5.5, and 5.4
  • Version 3.1 supports PHP 5.5 and 5.4
  • Version 3.0 supports PHP 5.4.

我們的版本是5.6,所以下載SQLSRV32.EXE即可。下載後按右鍵解壓縮。

xampmssql0024.接下來我們確認一下PHP是ThreadSafe或是non-ThreadSafe版本,到XAMPP\php目錄下,找php.dll版本。看到是php5ts.dll(PHP5 ThreadSafe)。

五、確定版本後,回到剛才解開的檔案複製以下的檔案到xampp\php\ext目錄下

xampmssql004

六、接著編輯php.ini,尋找extension=區塊,在下面加上二行(注意.dll名稱是你剛才copy過去的版本名稱)

extension=php_pdo_sqlsrv_56_ts.dll
extension=php_sqlsrv_56_ts.dll

xampmssql005

 

xampmssql006

七、存檔後重新開啟APACHE

xampmssql008 xampmssql007

 

八、回到phpinfo()頁面,如果安裝成功可以搜尋到sqlsrv跟pdo_sqlsrvxampmssql010 xampmssql009九、接著就可以連線到sql資料庫(本文以CodeIgniter為例)

xampmssql012 xampmssql011

xampmssql013
$this->load->database();
$query = $this->db->get(‘cmed’)->result_array();
array_walk_recursive($query, function(&$value, $key) {
if(is_string($value)) {
$value = urlencode($value);
}
});
$json = urldecode(json_encode($query));
echo $json;

 

備註:

Microsoft® ODBC Driver 11 for SQL Server® – Windows

Microsoft ODBC Driver For SQL Server 提供從 Windows 到 Microsoft SQL Server 的原生連線能力。

 

2015.8.29 新增免安裝整合包,下載解壓縮後執行xampp-control 即可運作。

按我下載

 

 

 

 

c#簡體版列印指令注意

簡體版列印指令注意
System.Text.Encoding.GetEncoding(“gb2312”).GetBytes(“简体文字测试”);
不能使用
System.Text.Encoding.Default.GetBytes(“简体文字测试”);
會依據作業系統的encoding~~

this.serialPort1.PortName = textBox1.Text;
this.serialPort1.Open();
byte[] bData = System.Text.Encoding.GetEncoding("gb2312").GetBytes("简体文字测试");
this.serialPort1.Write(bData, 0, bData.Length);
byte[] CutPaper = new byte[] { 0x1d, 0x56, 0x42, 0x00 };
this.serialPort1.Write(CutPaper, 0, CutPaper.Length);

使用SQLite Expert將access資料匯入SQLite

因為要撰寫PC轉到手機的程式,所以需要將手上的ACCESS轉到SQLite上。可以使用SQLite Expert這個工具來轉資料,不過需要付費的Professional才有。
sqliteaccess001
點選 Fiel -> New Database
sqliteaccess002
輸入要新建db的路徑,程式會根據database name建立對應的alias
sqliteaccess003

 

建立完成後就看到有新的Database

sqliteaccess004

 

接下來點選上面的 Import/Export->Data Transfer Wizard,會有對話框問你要Export匯出或Import匯入。然後下面是匯入的方式是使用SQL或是ADO data source

sqliteaccess006

接著會問你用什麼方式連線,可以 Use Connection String按Build

sqliteaccess007

 

點選Microsoft Jet 4.0 OLE DB Provider連結access

sqliteaccess008

選取我們要連的db

sqliteaccess009

接著開始匯入

sqliteaccess010

中間會出現login畫面直接按ok

sqliteaccess011

接著會問你要匯入那個table

sqliteaccess012

完成後系統使最後確認

sqliteaccess013

開始匯入資料

sqliteaccess014

匯入完畢後就可以看到塞進去的table跟資料了sqliteaccess015

 

 

Delphi透過odbc連結SQLite

Delphi5~7連接SQLite可以透過上述網站的SQLite ODBC Driver,透過ADO元件連結資料庫。

這樣一來,在開發行動裝置時。透過SQLite Expert建置完資料庫後,利用Delphi做資料整理~
再將資料放在Android 的asseets 或是iOS放在app document,core data初始化時再copy過去。

P.S Delphi 連線字串
DRIVER=SQLite3 ODBC Driver;Database=c:\test\test.db;LongNames=0;Timeout=1000;NoTXN=0;SyncPragma=NORMAL;StepAPI=0;

 

http://www.sqliteexpert.com/

http://www.ch-werner.de/sqliteodbc/

 

JAVA2OP更新

主要是修補缺少的二個檔案
bin\converters\java2op\bootclasses.jar
bin\converters\java2op\bootclasses.xml

下載之後將檔案copy到以下的路徑即可

bin\converters\java2op\bootclasses.jar
bin\converters\java2op\bootclasses.xml

下載路徑:
http://cc.embarcadero.com/Item/30326

Delphi 使用superobject分析JSON

ResizedImage600199-RADJson
http://superobject.googlecode.com

https://github.com/hgourvest/superobject

Delphi從2009才開始支援JSON格式,先前的版本需使用第三方函式庫才能解決。這邊提供不錯的SuperObject給大家。

使用方式很簡單,例如從台北市政府資料開放平台取得臺北市公廁點位資訊

[json]
[{“unit”:”台北市政府環境保護局”,”title”:”公廁坐落:士林官邸”,”dep_content”:”座數:8,特優級:2,優等級:6,普通級:0,加強級:0,無障礙設施”,”address”:”臺北市士林區福林路60號”,”lng”:”121.530152″,”lat”:”25.094898″,”modifydate”:”2013-03-25T17:58:20+08:00″},{“unit”:”台北市政府環境保護局”,”title”:”公廁坐落:天母公園”,”dep_content”:”座數
:1,特優級:0,優等級:1,普通級:0,加強級:0″,”address”:”臺北市士林區中山北路七段219號邊”,”lng”:”121.530071″,”lat”:”25.125855″,”modifydate”:”2015-08-06T00:00:00+08:00″}]
[/json]
[pascal]
uses superobject, supertypes, superxmlparser;

var vjson: Isuperobject;
vitem:Tsuperarray;
i,j:integer;
s:string;
begin
vjson:= so(‘[{"unit":"台北市政府環境保護局","address":"臺北市士林區福林路60號"},{"unit":"台北市政府環境保護局","address":"臺北市士林區中山北路七段219號邊"}]’);
vitem:=vjson.AsArray;
for i:=0 to vitem.Length-1 do begin
memo2.Lines.Add(vitem[i][‘unit’].AsString+’ ‘+vitem[i][‘address’].AsString);
end;
end;
[/pascal]

那如果格式如下
[json]
{“zoo”:”壽山動物園”,”animals”:[{“name”:”猴子”,”years”:”12″},{“name”:”猩猩”,”years”:”5″}]}
[/json]
[pascal]
var vjson: Isuperobject;
vitem:Tsuperarray;
i:integer;
begin
vjson:= so(‘{"zoo":"壽山動物園","animals":[{"name":"猴子","years":"12"},{"name":"猩猩","years":"5"}]}’);
memo2.lines.add(vjson[‘zoo’].asstring);
vitem:= vjson[‘animals’].AsArray;
for i:=0 to vitem.Length -1 do begin
memo1.Lines.Add(vitem[i][‘name’].AsString+’ ‘+vitem[i][‘years’].AsString );
end;
[/pascal]