`
tomqyp
  • 浏览: 26145 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
最近访客 更多访客>>
社区版块
存档分类
最新评论
阅读更多
刚刚接触D,本身功力又不深,所以只能写些应用级的东西,就当是学习笔记了。
ddbi是用D下的一套的数据库接口,支持: 详细介绍见项目主页 http://www.dsource.org/projects/ddbi

下载以后解压,根据说明先编译
dmd -run buildme.d all
提示链接时一大堆函数找不到,我用的是tango用黓认库,配置了半天相关参数,没用。
于是干脆用回phobos,再编译
提示找不到bud程序,我的bud文件名是build.exe,要解决有两个办法。
一是将build.exe更名为bud.exe,但是我用的IDE是poseidon,poseidon是调用build.exe进行编译,所以没用这个办法(后来发现当前版本的poseidon可以直接设定bud文件)。
第二个办法是找打开buildme.d找到
 if (system("bud " ~ buildCommand))  将其改为
 if (system("build " ~ buildCommand))
再次编译,还是没通过!!
看提示是找不到win32\odbcinst.d,可以自己写,或者在dsource.org binding项目有个现成的win32项目。
下载解压,再编译,ok
不过提示两个模块要手工编译,不知道为什么,还望高人赐教。
分享到:
评论
9 楼 tomqyp 2007-04-07  
对了,我试ddbi时试着用静态库结果提示要open ssl的几个库,一时打不到,能不能顺便提供。
8 楼 heromyth 2007-04-07  
不用收藏了。我刚刚编译了mysql-4.1.22的libmysql库,并且已将导入库进行了转换。可以 D 连接工具里直接使用,在 DDBI 里简单测试成功。这里可以下载:http://bitworld.ys168.com
7 楼 tomqyp 2007-04-07  
好详细,好藏,我的只改了几个用到的函数
6 楼 heromyth 2007-04-06  
引用


LIBRARY libmySQL
EXETYPE NT
SUBSYSTEM WINDOWS
EXPORTS
_myodbc_remove_escape@8 = myodbc_remove_escape
_mysql_affected_rows@4 = mysql_affected_rows
_mysql_change_user@16 = mysql_change_user
_mysql_character_set_name@4 = mysql_character_set_name
_mysql_close@4 = mysql_close
_mysql_connect@16 = mysql_connect
_mysql_create_db@8 = mysql_create_db
_mysql_data_seek@12 = mysql_data_seek
_mysql_debug@4 = mysql_debug
_mysql_drop_db@8 = mysql_drop_db
_mysql_dump_debug_info@4 = mysql_dump_debug_info
_mysql_eof@4 = mysql_eof
_mysql_errno@4 = mysql_errno
_mysql_error@4 = mysql_error
_mysql_escape_string@12 = mysql_escape_string
_mysql_fetch_field@4 = mysql_fetch_field
_mysql_fetch_field_direct@8 = mysql_fetch_field_direct
_mysql_fetch_fields@4 = mysql_fetch_fields
_mysql_fetch_lengths@4 = mysql_fetch_lengths
_mysql_fetch_row@4 = mysql_fetch_row
_mysql_field_count@4 = mysql_field_count
_mysql_field_seek@8 = mysql_field_seek
_mysql_field_tell@4 = mysql_field_tell
_mysql_free_result@4 = mysql_free_result
_mysql_get_client_info@0 = mysql_get_client_info
_mysql_get_host_info@4 = mysql_get_host_info
_mysql_get_proto_info@4 = mysql_get_proto_info
_mysql_get_server_info@4 = mysql_get_server_info
_mysql_info@4 = mysql_info
_mysql_init@4 = mysql_init
_mysql_insert_id@4 = mysql_insert_id
_mysql_kill@8 = mysql_kill
_mysql_list_dbs@8 = mysql_list_dbs
_mysql_list_fields@12 = mysql_list_fields
_mysql_list_processes@4 = mysql_list_processes
_mysql_list_tables@8 = mysql_list_tables
_mysql_num_fields@4 = mysql_num_fields
_mysql_num_rows@4 = mysql_num_rows
_mysql_odbc_escape_string@28 = mysql_odbc_escape_string
_mysql_options@12 = mysql_options
_mysql_ping@4 = mysql_ping
_mysql_port = mysql_port
_mysql_query@8 = mysql_query
_mysql_read_query_result@4 = mysql_read_query_result
_mysql_real_connect@32 = mysql_real_connect
_mysql_real_escape_string@16 = mysql_real_escape_string
_mysql_real_query@12 = mysql_real_query
_mysql_refresh@8 = mysql_refresh
_mysql_row_seek@8 = mysql_refresh
_mysql_row_tell@4 = mysql_row_tell
_mysql_select_db@8 = mysql_select_db
_mysql_send_query@12 = mysql_send_query
_mysql_shutdown@4 = mysql_shutdown
_mysql_stat@4 = mysql_stat
_mysql_store_result@4 = mysql_store_result
_mysql_thread_id@4 = mysql_thread_id
_mysql_thread_safe@0 = mysql_thread_safe
_mysql_unix_port = mysql_unix_port
_mysql_use_result@4 = mysql_use_result
5 楼 qiezi 2007-04-06  
你这个def文件哪找的?贴一个出来用用。。。
4 楼 qiezi 2007-04-06  
使用mysql里面的dll,用implib导出.def文件,修改名称再用implib导出lib即可。mysql的dll用的是stdcall,它导出dll时把名称重定义过了,所以要这么麻烦地改回去。
3 楼 heromyth 2007-04-06  
用vc一直没成功编译mysql,因此无法得到其导入库,也就无法测试coff2omf是否起作用。
我是直接在网上找到的一个关于mysql的def文件文件,并生成导入库。测试基本成功。

// implib /system mysql4.lib libmysql.def
// dmd -version=Phobos -I. testmysql.d dbi.lib mysql4.lib sqlite.lib


import dbi.mysql.MysqlDatabase;
import dbi.Row;
import dbi.Result;

import std.stdio;

void main() {
    MysqlDatabase db = new MysqlDatabase();
    db.connect("host=localhost;dbname=mysql", "root", "password");

    Result res = db.query("select * from user;");
	Row rows = res.fetchRow();
		writefln("user:%s  password:%s", rows.get("User"), rows.get("Password"));
    db.close();
}


另外也成功测试了SQLite。其它的数据库由于不感兴趣,所以未加测试。

关于使用DDBI的一个建议就是,只编译自己需要的那几个库模块,赿小赿好。
2 楼 tomqyp 2007-02-26  
引用
我倒是编译通过了,但是没法用。

没法用,可能是因为要用用调用数据库本身的驱动或API,我试用的是mysql,要用到mysql的两个库,可惜两个库是coff格式的,D网站上有个coff2omf工具,可以把coff转到omf格式,可惜是收费的,dmc我也不会用,你可以试试用dmc编译。
1 楼 jinheking 2007-02-16  
我也有这个问题,有没有高人能够解决!

dmd -run buildme.d all -ODBC -oracle

我倒是编译通过了,但是没法用。
那位大哥能够提供一个可以连接Postgres和oracle的ddbi.lib
并且给一个小例子。
在这里先谢谢了

相关推荐

Global site tag (gtag.js) - Google Analytics