Thread Rating:
  • 401 Vote(s) - 2.81 Average
  • 1
  • 2
  • 3
  • 4
  • 5
SQL Server
11-17-2011, 05:25 PM,
#1
SQL Server
現在のシステムをcurlに移行できるか検討中です。
現在のシステムは、Access+SQLServerで構築されています。

しかし、curlにてSQLServerへの接続の情報が見つかりません。
不可能とういことはないと思いますが、サンプルコード等ありましたら教えて下さい。
Reply
11-18-2011, 10:19 AM,
#2
RE: SQL Server
Curlのアプリから、ローカルDB(例えばSQLLite)以外のDBにアクセスする時に、大抵サーバ側のアプリケーション経由でアクセスしますので、普通のウェブアプリケーションからSQLServerにアクセスする方法と変わりません、ネット上にサンプルがたくさんあると思いますが...
また最新のSQLServerなら、標準のWebAPI(例えばReporting Services)などあるかと思います、それらを利用できれば、サーバ側でコードもいらないかもしれませんね。

Reply
11-21-2011, 11:14 AM, (This post was last modified: 11-21-2011, 11:17 AM by hokada.)
#3
RE: SQL Server
SQL serverにアクセスする際、通常はサーバサイドを介して、アクセスするケースが多いと思います。

例えば、
Curl -> SOAP/Curl ORBなど -> サーバサイドプログラム(Javaなど) -> JDBCなど ... -> SQL Server/Oracleなど

但し、クラサバのように直接CurlからSQL Serverなどにアクセスしたい場合は、
Curlではドライバを用意しておりませんが、ActiveXを利用することで、ADODBにアクセスできます。

例)
Code:
def con = {ActiveXObject ClsId = |"{00000514-0000-0010-8000-00AA006D2EA4}"|}
{con.Open " Driver=\{SQL Server\};Server=testsv01;Database=testdb;Uid=foo;Pwd=pass;" } || DSN
{con.Execute "SELECT * FROM HOGE;"}
.....
{con.Close}

また、ローカルのAccessファイル(.mdb)なども同様の方法を使ってアクセスできます。

--
CurlのActiveXObjectの使い方については、こちらも参考になるかもしれません。
Reply
11-24-2011, 06:32 PM,
#4
RE: SQL Server
参考までにCurlからActiveX経由でAccessのMDBを読むサンプルです。
使用しているMDBは
http://developers.curlap.com/gallery/apps/104
こちらのものを使用しています。SQLServerについてもこれを応用すればできると思います。

Code:
{curl 8.0 applet}
{curl-file-attributes character-encoding = "shift-jis"}
{import * from CURL.GRAPHICS.ACTIVEX}

|| MDBのテーブル名
{let names:StringArray = {StringArray "name", "address", "phone", "number", "amount"}}
|| RecordSetのフィールド名
{let domains:StringArray = {StringArray "String","String", "String", "int", "int"}}
|| RecordSetのRecordField配列生成
{let fields : {Array-of RecordField} = {{Array-of RecordField}}}
{for i:int=0 below names.size do
    let domain: Domain = {Domain.from-type {evaluate domains[i]}}
    {fields.append {RecordField names[i],domain = domain,caption=names[i],nullable? = true}}
}
|| ADOのオープン
{let cn:ActiveXObject = {ActiveXObject ClsId = |"{00000514-0000-0010-8000-00AA006D2EA4}"|}}
|| Accessのファイル名を指定
{let mdb-file-url:Url = {url "sampledb.mdb"}}
{let cnstr:String = "Driver=\{Microsoft Access Driver (*.mdb)\};Dbq=" & mdb-file-url.local-filename} || Accessの場合
||{let cnstr:String = " Driver=\{SQL Server\};Server=testsv01;Database=testdb;Uid=foo;Pwd=pass;" } || SQLServerの場合
{cn.Open cnstr}
|| SQLの実行
{let sql:String = "SELECT name,address,phone,number,amount from testdb;"}
{let rs:ActiveXObject = {cn.Execute sql}}
|| データ格納
{let rds : {Array-of RecordData} = {{Array-of RecordData}}}
{while {rs.EOF} == false do
    let rd : RecordData = {RecordData}
    {for i:int=0 below fields.size do
||        {output {rs.Fields names[i]}.Value}
        let val:any = {rs.Fields names[i]}.Value
        {switch fields[i].domain.type
         case String do
            set rd[ fields[i].name] = val
         case int do
            set rd[ fields[i].name] = val
        }
    }
    {rds.append rd}
    {rs.MoveNext}
}
{rs.Close}
{cn.Close}
{rs.destroy-object}
{cn.destroy-object}
|| RecordField配列とRecordData配列を利用してRecordSetを生成
{let rsg : RecordSet = {RecordSet {RecordFields {splice fields}}, {splice rds} } }
|| レコードグリッドの定義
{let rg:RecordGrid = {RecordGrid width=16cm, height = 6cm, record-source = rsg } }
|| 画面表示
{value rg }


Reply

Forum Jump:


Users browsing this thread:
1 Guest(s)

MyBB SQL Error

MyBB has experienced an internal SQL error and cannot continue.

SQL Error:
1017 - Can't find file: 'mybb_threadviews' (errno: 2)
Query:
INSERT INTO mybb_threadviews (tid) VALUES('346')