線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1934
推到 Plurk!
推到 Facebook!

如何使用ODBC API?

缺席
junlin
初階會員


發表:66
回覆:94
積分:42
註冊:2002-03-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-07-23 17:20:50 IP:220.130.xxx.xxx 訂閱
我想寫一個工具軟體, 可透過已設定好的ODBC連到資料庫後, 取回該資料庫內的所有Table, Stored procedure, view...等資料,
因為後端的DB有可能為各家資料庫(mssql, informix, oracle, mysql), 所以只有透過ODBC API才能符合各家DB,
請問, 有人有使用過ODBC API嗎?
雖然看了MSDN上的說明, 但還是不是很瞭解, 例如: function SQLTables
http://msdn.microsoft.com/en-us/library/ms711831(VS.85).aspx


還是有其他辦法也是可以只要寫1份code就能符合各家DB的呢?
junlin
初階會員


發表:66
回覆:94
積分:42
註冊:2002-03-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-07-25 13:49:57 IP:220.130.xxx.xxx 訂閱
寫到SQLFetch後, 不知道為什麼總是return 100 --> nodata, 只好先放著了, 有人知道為什麼嗎?

[code delphi]
isSuccess(SQLAllocHandle(SQL_HANDLE_ENV, Pointer(SQL_NULL_HANDLE), hEnv));
isSuccess(SQLSetEnvAttr(hEnv, SQL_ATTR_ODBC_VERSION, Pointer(SQL_OV_ODBC3), 0));
isSuccess(SQLAllocHandle(SQL_HANDLE_DBC, hEnv, hDB));
isSuccess(SQLSetConnectAttr(hDB, SQL_LOGIN_TIMEOUT, Pointer(SQL_LOGIN_TIMEOUT_DEFAULT), 0));
isSuccess(SQLConnect(hDB, pchar(DSNname),length(DSNname), pchar(''),0, pchar(''),0));
isSuccess(SQLAllocHandle(SQL_HANDLE_STMT, hDB, hStmt));
isSuccess(SQLTables(hStmt, pchar(''),0, pchar(''),0, pchar(''),0, pchar(''),0));
isSuccess(SQLBindCol(hStmt, 1, SQL_CHAR, Pointer(TableType), sizeof(TableType), Pointer(Length1)));
isSuccess(SQLBindCol(hStmt, 2, SQL_CHAR, Pointer(CatalogName), sizeof(CatalogName), Pointer(Length2)));
isSuccess(SQLBindCol(hStmt, 3, SQL_CHAR, Pointer(SchemaName), sizeof(SchemaName), Pointer(Length3)));
isSuccess(SQLBindCol(hStmt, 4, SQL_CHAR, Pointer(TableName), sizeof(TableName), Pointer(Length4)));

while isSuccess(SQLFetch(hStmt)) do --這行總是回傳100, 明明有table啊
begin
showmessage(catalogname '_' schemaname '_' tablename '_' tabletype);
end;
[/code]
編輯記錄
junlin 重新編輯於 2008-07-25 13:52:17, 註解 無‧
系統時間:2024-04-26 17:06:41
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!