D语言中国主页  D语言编辑器SciTE4D   DWin库 D语言官方网站
D语言编译器1.x最新版 OpenSource   Tango   webnews  Wiki

查看完整版本: 让D访问其他应用程序

yidabu 2007-4-27 19:24

让D访问其他应用程序

让D访问其他应用程序知识若不分享 实在没有意义 http://www.d-programming-language-china.org 20070427点击下面网址查看原文:http://www.d-programming-language-china.org        by:        ideage        from:        http://ideage.javaeye.com/blog/26718        关键字:        D 导入库 HTOD        要使用D,就要和其他应用配合。D和C是二进制兼容的。可以转换C的头文件为D的文件,然后访问C的库,或者兼容C的库。        步骤:        1.转换C的头文件。具体办法http://www.digitalmars.com/d/htomodule.html,也可以使用HTOD工具 http://www.digitalmars.com/d/htod.html,下载在http://ftp.digitalmars.com/d/htod.zip        2.转换动态库,生成D可以链接的lib文件,D链接的格式是Intel32为OMF格式,和微软使用的lib文件格式COFF不兼容,转换格式的程序我没有找到 ,虽然介绍了。可使用的是implib,用法http://www.digitalmars.com/ctg/implib.html,implib /s kernel32.lib kernel32.dll 下载地址http://ftp.digitalmars.com/bup.zip,包含了几个工具。        创建导入函数定义def文件的工具http://www.dprogramming.com/linkdef.php( 本文出处: http://www.d-programming-language-china.org )        3.例子,转换SQLServer的头文件,SQLDB.H,SQLFRONT.H。        代码        [Copy to clipboard] [ - ]CODE:                                module sqldb;                extern (C):                alias double DOUBLE;                /*****************************************************************************                * DBPROCESS, LOGINREC and DBCURSOR    *                *****************************************************************************/                alias void DBPROCESS;                alias void LOGINREC;                alias void DBCURSOR;                alias void DBHANDLE;                                alias void *PDBPROCESS;                alias void *PLOGINREC;                alias void *PDBCURSOR;                alias void *PDBHANDLE;                alias int    function()LGFARPROC;                                /*****************************************************************************                * Win32 compatibility datatype definitions    *                * Note: The following datatypes are provided for Win32 compatibility.    *                * Since some of the datatypes are already defined in unrelated include files *                * there may definition duplication.    Every attempt has been made to check    *                * for such problems.    *                *****************************************************************************/                                alias short SHORT;                alias int INT;                alias uint UINT;                alias ushort USHORT;                alias uint ULONG;                alias char CHAR;                alias INT *LPINT;                alias char BYTE;                alias CHAR *LPSTR;                alias BYTE *LPBYTE;                alias void *LPVOID;                alias CHAR *LPCSTR;                alias int BOOL;                                /*****************************************************************************                * DB-Library datatype definitions    *                *****************************************************************************/                const DBMAXCHAR = 256;                alias INT RETCODE;                alias INT STATUS;                // DB-Library datatypes                alias char DBCHAR;                alias ubyte DBBINARY;                alias ubyte DBTINYINT;                alias short DBSMALLINT;                alias ushort DBUSMALLINT;                alias int DBINT;                alias double DBFLT8;                alias ubyte DBBIT;                alias ubyte DBBOOL;                alias float DBFLT4;                alias int DBMONEY4;                                alias DBFLT4 DBREAL;                alias UINT DBUBOOL;                                struct dbdatetime4                {                    USHORT numdays;                    USHORT nummins;                }                alias dbdatetime4 DBDATETIM4;                                struct dbvarychar                {                    DBSMALLINT len;                    DBCHAR [256]str;                }                alias dbvarychar DBVARYCHAR;                                struct dbvarybin                {                    DBSMALLINT len;                    BYTE [256]array;                }                alias dbvarybin DBVARYBIN;                                struct dbmoney                {                    DBINT mnyhigh;                    ULONG mnylow;                }                alias dbmoney DBMONEY;                                struct dbdatetime                {                    DBINT dtdays;                    ULONG dttime;                }                alias dbdatetime DBDATETIME;                                // DBDATEREC structure used by dbdatecrack                struct dbdaterec                {                    int    year;    // 1753 - 9999                    INT    quarter;    // 1 - 4                    INT    month;    // 1 - 12                    INT    dayofyear;    // 1 - 366                    INT    day;    // 1 - 31                    INT    week;    // 1 - 54 (for leap years)                    INT    weekday;    // 1 - 7    (Mon - Sun)                    INT    hour;    // 0 - 23                    INT    minute;    // 0 - 59                    INT    second;    // 0 - 59                    INT    millisecond;    // 0 - 999                }                alias dbdaterec DBDATEREC;                                const MAXNUMERICLEN = 16;                                const MAXNUMERICDIG = 38;                const DEFAULTPRECISION = 18;                                const DEFAULTSCALE = 0;                struct dbnumeric                {                    BYTE precision;                    BYTE scale;                    BYTE sign;                    BYTE [16]val;                }                alias dbnumeric DBNUMERIC;                                alias DBNUMERIC DBDECIMAL;                                const MAXCOLNAMELEN = 30;                                const MAXTABLENAME = 30;                                struct _N1                {                    DBINT SizeOfStruct;                    CHAR [31]Name;                    CHAR [31]ActualName;                    CHAR [31]TableName;                    SHORT Type;                    DBINT UserType;                    DBINT MaxLength;                    BYTE Precision;                    BYTE Scale;                    BOOL VarLength;    // TRUE, FALSE                    BYTE Null;    // TRUE, FALSE or DBUNKNOWN                    BYTE CaseSensitive; // TRUE, FALSE or DBUNKNOWN                    BYTE Updatable;    // TRUE, FALSE or DBUNKNOWN                    BOOL Identity;    // TRUE, FALSE                }                alias _N1 DBCOL;                alias _N1 *LPDBCOL;                                const MAXSERVERNAME = 30;                const MAXNETLIBNAME = 255;                                const MAXNETLIBCONNSTR = 255;                struct _N2                {                    DBINT SizeOfStruct;                    BYTE ServerType;                    USHORT ServerMajor;                    USHORT ServerMinor;                    USHORT ServerRevision;                    CHAR [31]ServerName;                    CHAR [256]NetLibName;                    CHAR [256]NetLibConnStr;                }                alias _N2 DBPROCINFO;                alias _N2 *LPDBPROCINFO;                                struct _N3                {                    DBINT SizeOfStruct;                    ULONG TotCols;                    ULONG TotRows;                    ULONG CurRow;                    ULONG TotRowsFetched;                    ULONG Type;                    ULONG Status;                }                alias _N3 DBCURSORINFO;                alias _N3 *LPDBCURSORINFO;                                /*****************************************************************************                * Pointer Datatypes    *                *****************************************************************************/                                alias LPINT LPCINT;                alias LPBYTE LPCBYTE;                alias USHORT *LPUSHORT;                alias LPUSHORT LPCUSHORT;                alias DBINT *LPDBINT;                alias LPDBINT LPCDBINT;                alias DBBINARY *LPDBBINARY;                alias LPDBBINARY LPCDBBINARY;                alias DBDATEREC *LPDBDATEREC;                alias LPDBDATEREC LPCDBDATEREC;                alias DBDATETIME *LPDBDATETIME;                alias LPDBDATETIME LPCDBDATETIME;                                /*****************************************************************************                * General #defines    *                *****************************************************************************/                                const SERVTYPE_UNKNOWN = 0;                                const SERVTYPE_MICROSOFT = 1;                // Used by dbcolinfo                enum CI_TYPES                {                    CI_REGULAR = 1,                    CI_ALTERNATE,                    CI_CURSOR,                }                                const DB_IN = 1;                const DB_OUT = 2;                                const BCPMAXERRS = 1; // bcp_control parameter                const BCPFIRST = 2;                const BCPLAST = 3;                const BCPBATCH = 4;                const BCPKEEPNULLS = 5;                const BCPABORT = 6;                                const TRUE = 1;                const FALSE = 0;                                const TINYBIND = 1;                const SMALLBIND = 2;                const INTBIND = 3;                const CHARBIND = 4;                const BINARYBIND = 5;                const BITBIND = 6;                const DATETIMEBIND = 7;                const MONEYBIND = 8;                const FLT8BIND = 9;                const STRINGBIND = 10;                const NTBSTRINGBIND = 11;                const VARYCHARBIND = 12;                const VARYBINBIND = 13;                const FLT4BIND = 14;                const SMALLMONEYBIND = 15;                const SMALLDATETIBIND = 16;                const DECIMALBIND = 17;                const NUMERICBIND = 18;                const SRCDECIMALBIND = 19;                const SRCNUMERICBIND = 20;                                alias SRCNUMERICBIND MAXBIND;                const DBSAVE = 1;                const DBNOSAVE = 0;                const DBNOERR = -1;                const DBFINDONE = 0x04;                const DBMORE = 0x10;                const DBMORE_ROWS = 0x20;                                const MAXNAME = 31;                                const DBTXTSLEN = 8;                const DBTXPLEN = 16;                const INT_EXIT = 0;                const INT_CONTINUE = 1;                const INT_CANCEL = 2;                                // dboptions                const DBBUFFER = 0;                const DBOFFSET = 1;                const DBROWCOUNT = 2;                const DBSTAT = 3;                const DBTEXTLIMIT = 4;                const DBTEXTSIZE = 5;                const DBARITHABORT = 6;                const DBARITHIGNORE = 7;                const DBNOAUTOFREE = 8;                const DBNOCOUNT = 9;                const DBNOEXEC = 10;                const DBPARSEONLY = 11;                const DBSHOWPLAN = 12;                                const DBSTORPROCID = 13;                                const DBCLIENTCURSORS = 16;                const DBSETTIME = 17;                                const DBQUOTEDIDENT = 18;                                // Data Type Tokens                const SQLVOID = 0x1f;                const SQLTEXT = 0x23;                const SQLVARBINARY = 0x25;                const SQLINTN = 0x26;                const SQLVARCHAR = 0x27;                const SQLBINARY = 0x2d;                const SQLIMAGE = 0x22;                const SQLCHAR = 0x2f;                const SQLINT1 = 0x30;                const SQLBIT = 0x32;                const SQLINT2 = 0x34;                const SQLINT4 = 0x38;                const SQLMONEY = 0x3c;                const SQLDATETIME = 0x3d;                const SQLFLT8 = 0x3e;                const SQLFLTN = 0x6d;                const SQLMONEYN = 0x6e;                const SQLDATETIMN = 0x6f;                const SQLFLT4 = 0x3b;                const SQLMONEY4 = 0x7a;                const SQLDATETIM4 = 0x3a;                const SQLDECIMAL = 0x6a;                                const SQLNUMERIC = 0x6c;                // Data stream tokens                const SQLCOLFMT = 0xa1;                const OLD_SQLCOLFMT = 0x2a;                const SQLPROCID = 0x7c;                const SQLCOLNAME = 0xa0;                const SQLTABNAME = 0xa4;                const SQLCOLINFO = 0xa5;                const SQLALTNAME = 0xa7;                const SQLALTFMT = 0xa8;                const SQLERROR = 0xaa;                const SQLINFO = 0xab;                const SQLRETURNVALUE = 0xac;                const SQLRETURNSTATUS = 0x79;                const SQLRETURN = 0xdb;                const SQLCONTROL = 0xae;                const SQLALTCONTROL = 0xaf;                const SQLROW = 0xd1;                const SQLALTROW = 0xd3;                const SQLDONE = 0xfd;                const SQLDONEPROC = 0xfe;                const SQLDONEINPROC = 0xff;                const SQLOFFSET = 0x78;                const SQLORDER = 0xa9;                                const SQLLOGINACK = 0xad;                // Ag op tokens                const SQLAOPCNT = 0x4b;                const SQLAOPSUM = 0x4d;                const SQLAOPAVG = 0x4f;                const SQLAOPMIN = 0x51;                const SQLAOPMAX = 0x52;                const SQLAOPANY = 0x53;                                const SQLAOPNOOP = 0x56;                // Error numbers (dberrs) DB-Library error codes                const SQLEMEM = 10000;                const SQLENULL = 10001;                const SQLENLOG = 10002;                const SQLEPWD = 10003;                const SQLECONN = 10004;                const SQLEDDNE = 10005;                const SQLENULLO = 10006;                const SQLESMSG = 10007;                const SQLEBTOK = 10008;                const SQLENSPE = 10009;                const SQLEREAD = 10010;                const SQLECNOR = 10011;                const SQLETSIT = 10012;                const SQLEPARM = 10013;                const SQLEAUTN = 10014;                const SQLECOFL = 10015;                const SQLERDCN = 10016;                const SQLEICN = 10017;                const SQLECLOS = 10018;                const SQLENTXT = 10019;                const SQLEDNTI = 10020;                const SQLETMTD = 10021;                const SQLEASEC = 10022;                const SQLENTLL = 10023;                const SQLETIME = 10024;                const SQLEWRIT = 10025;                const SQLEMODE = 10026;                const SQLEOOB = 10027;                const SQLEITIM = 10028;                const SQLEDBPS = 10029;                const SQLEIOPT = 10030;                const SQLEASNL = 10031;                const SQLEASUL = 10032;                const SQLENPRM = 10033;                const SQLEDBOP = 10034;                const SQLENSIP = 10035;                const SQLECNULL = 10036;                const SQLESEOF = 10037;                const SQLERPND = 10038;                const SQLECSYN = 10039;                const SQLENONET = 10040;                const SQLEBTYP = 10041;                const SQLEABNC = 10042;                const SQLEABMT = 10043;                const SQLEABNP = 10044;                const SQLEBNCR = 10045;                const SQLEAAMT = 10046;                const SQLENXID = 10047;                const SQLEIFNB = 10048;                const SQLEKBCO = 10049;                const SQLEBBCI = 10050;                const SQLEKBCI = 10051;                const SQLEBCWE = 10052;                const SQLEBCNN = 10053;                const SQLEBCOR = 10054;                const SQLEBCPI = 10055;                const SQLEBCPN = 10056;                const SQLEBCPB = 10057;                const SQLEVDPT = 10058;                const SQLEBIVI = 10059;                const SQLEBCBC = 10060;                const SQLEBCFO = 10061;                const SQLEBCVH = 10062;                const SQLEBCUO = 10063;                const SQLEBUOE = 10064;                const SQLEBWEF = 10065;                const SQLEBTMT = 10066;                const SQLEBEOF = 10067;                const SQLEBCSI = 10068;                const SQLEPNUL = 10069;                const SQLEBSKERR = 10070;                const SQLEBDIO = 10071;                const SQLEBCNT = 10072;                const SQLEMDBP = 10073;                const SQLINIT = 10074;                const SQLCRSINV = 10075;                const SQLCRSCMD = 10076;                const SQLCRSNOIND = 10077;                const SQLCRSDIS = 10078;                const SQLCRSAGR = 10079;                const SQLCRSORD = 10080;                const SQLCRSMEM = 10081;                const SQLCRSBSKEY = 10082;                const SQLCRSNORES = 10083;                const SQLCRSVIEW = 10084;                const SQLCRSBUFR = 10085;                const SQLCRSFROWN = 10086;                const SQLCRSBROL = 10087;                const SQLCRSFRAND = 10088;                const SQLCRSFLAST = 10089;                const SQLCRSRO = 10090;                const SQLCRSTAB = 10091;                const SQLCRSUPDTAB = 10092;                const SQLCRSUPDNB = 10093;                const SQLCRSVIIND = 10094;                const SQLCRSNOUPD = 10095;                const SQLCRSOS2 = 10096;                const SQLEBCSA = 10097;                const SQLEBCRO = 10098;                const SQLEBCNE = 10099;                const SQLEBCSK = 10100;                const SQLEUVBF = 10101;                const SQLEBIHC = 10102;                const SQLEBWFF = 10103;                const SQLNUMVAL = 10104;                const SQLEOLDVR = 10105;                const SQLEBCPS = 10106;                const SQLEDTC = 10107;                const SQLENOTIMPL = 10108;                const SQLENONFLOAT = 10109;                const SQLECONNFB = 10110;                                // The severity levels are defined here                const EXINFO = 1;    // Informational, non-error                const EXUSER = 2;    // User error                const EXNONFATAL = 3;    // Non-fatal error                const EXCONVERSION = 4;    // Error in DB-LIBRARY data conversion                const EXSERVER = 5;    // The Server has returned an error flag                const EXTIME = 6;    // waiting for a response from the Server - the DBPROCESS is still alive                const EXPROGRAM = 7;    // Coding error in user program                const EXRESOURCE = 8;    // Running out of resources - the DBPROCESS may be dead                const EXCOMM = 9;    // Failure in communication with Server - the DBPROCESS is dead                const EXFATAL = 10;    // Fatal error - the DBPROCESS is dead                const EXCONSISTENCY = 11;    // Internal software error    - notify MS Technical Supprt                // Offset identifiers                const OFF_SELECT = 0x16d;                const OFF_FROM = 0x14f;                const OFF_ORDER = 0x165;                const OFF_COMPUTE = 0x139;                const OFF_TABLE = 0x173;                const OFF_PROCEDURE = 0x16a;                const OFF_STATEMENT = 0x1cb;                const OFF_PARAM = 0x1c4;                const OFF_EXEC = 0x12c;                // Print lengths for certain fixed length data types                const PRINT4 = 11;                const PRINT2 = 6;                const PRINT1 = 3;                const PRFLT8 = 20;                const PRMONEY = 26;                const PRBIT = 3;                const PRDATETIME = 27;                                const SUCCEED = 1;                const FAIL = 0;                const SUCCEED_ABORT = 2;                                const DBUNKNOWN = 2;                const MORE_ROWS = -1;                const NO_MORE_ROWS = -2;                alias MORE_ROWS REG_ROW;                const BUF_FULL = -3;                // Status code for dbresults(). Possible return values are                // SUCCEED, FAIL, and NO_MORE_RESULTS.                const NO_MORE_RESULTS = 2;                const NO_MORE_RPC_RESULTS = 3;                const DBSETHOST = 1;                const DBSETUSER = 2;                const DBSETPWD = 3;                const DBSETAPP = 4;                const DBSETID = 5;                const DBSETLANG = 6;                const DBSETSECURE = 7;                const DBVER42 = 8;                const DBVER60 = 9;                const DBSETLOGINTIME = 10;                                const DBSETFALLBACK = 12;                // Standard exit and error values                const STDEXIT = 0;                const ERREXIT = -1;                                // dbrpcinit flags                const DBRPCRECOMPILE = 0x0001;                const DBRPCRESET = 0x0004;                const DBRPCCURSOR = 0x0008;                                // dbrpcparam flags                const DBRPCRETURN = 0x1;                const DBRPCDEFAULT = 0x2;                                // Cursor related constants                                // Following flags are used in the concuropt parameter in the dbcursoropen function                const CUR_READONLY = 1;                const CUR_LOCKCC = 2;                const CUR_OPTCC = 3;                const CUR_OPTCCVAL = 4;                // Following flags are used in the scrollopt parameter in dbcursoropen                const CUR_FORWARD = 0;                const CUR_KEYSET = -1;                const CUR_DYNAMIC = 1;                                const CUR_INSENSITIVE = -2;                // Following flags define the fetchtype in the dbcursorfetch function                const FETCH_FIRST = 1;                const FETCH_NEXT = 2;                const FETCH_PREV = 3;                const FETCH_RANDOM = 4;                const FETCH_RELATIVE = 5;                                const FETCH_LAST = 6;                // Following flags define the per row status as filled by dbcursorfetch and/or dbcursorfetchex                const FTC_EMPTY = 0x00;                const FTC_SUCCEED = 0x01;                const FTC_MISSING = 0x02;                const FTC_ENDOFKEYSET = 0x04;                                const FTC_ENDOFRESULTS = 0x08;                // Following flags define the operator types for the dbcursor function                const CRS_UPDATE = 1;                const CRS_DELETE = 2;                const CRS_INSERT = 3;                const CRS_REFRESH = 4;                                const CRS_LOCKCC = 5;                // Following value can be passed to the dbcursorbind function for NOBIND type                                const NOBIND = -2;                // Following are values used by DBCURSORINFO's Type parameter                const CU_CLIENT = 0x00000001;                const CU_SERVER = 0x00000002;                const CU_KEYSET = 0x00000004;                const CU_MIXED = 0x00000008;                const CU_DYNAMIC = 0x00000010;                const CU_FORWARD = 0x00000020;                const CU_INSENSITIVE = 0x00000040;                const CU_READONLY = 0x00000080;                const CU_LOCKCC = 0x00000100;                const CU_OPTCC = 0x00000200;                const CU_OPTCCVAL = 0x00000400;                // Following are values used by DBCURSORINFO's Status parameter                const CU_FILLING = 0x00000001;                const CU_FILLED = 0x00000002;                                // Following are values used by dbupdatetext's type parameter                const UT_TEXTPTR = 0x0001;                const UT_TEXT = 0x0002;                const UT_MORETEXT = 0x0004;                const UT_DELETEONLY = 0x0008;                                const UT_LOG = 0x0010;                                // The following values are passed to dbserverenum for searching criteria.                const NET_SEARCH = 0x0001;                const LOC_SEARCH = 0x0002;                // These constants are the possible return values from dbserverenum.                const ENUM_SUCCESS = 0x0000;                const MORE_DATA = 0x0001;                const NET_NOT_AVAIL = 0x0002;                const OUT_OF_MEMORY = 0x0004;                const NOT_SUPPORTED = 0x0008;                                const ENUM_INVALID_PARAM = 0x0010;                                // Netlib Error problem codes.    ConnectionError() should return one of                // these as the dblib-mapped problem code, so the corresponding string                // is sent to the dblib app's error handler as dberrstr.    Return NE_E_NOMAP                // for a generic DB-Library error string (as in prior versions of dblib).                                const NE_E_NOMAP = 0;                const NE_E_NOMEMORY = 1;                const NE_E_NOACCESS = 2;                const NE_E_CONNBUSY = 3;                const NE_E_CONNBROKEN = 4;                const NE_E_TOOMANYCONN = 5;                const NE_E_SERVERNOTFOUND = 6;                const NE_E_NETNOTSTARTED = 7;                const NE_E_NORESOURCE = 8;                const NE_E_NETBUSY = 9;                const NE_E_NONETACCESS = 10;                const NE_E_GENERAL = 11;                const NE_E_CONNMODE = 12;                const NE_E_NAMENOTFOUND = 13;                const NE_E_INVALIDCONN = 14;                const NE_E_NETDATAERR = 15;                const NE_E_TOOMANYFILES = 16;                const NE_E_CANTCONNECT = 17;                                const NE_MAX_NETERROR = 17;                                //define a function pointer                alias INT    DBERRHANDLE_PROC(PDBPROCESS , INT , INT , INT , LPCSTR , LPCSTR );                alias INT    DBMSGHANDLE_PROC(PDBPROCESS , DBINT , INT , INT , LPCSTR , LPCSTR , LPCSTR , DBUSMALLINT );                                DBERRHANDLE_PROC    dberrhandle(DBERRHANDLE_PROC );                DBMSGHANDLE_PROC    dbmsghandle(DBMSGHANDLE_PROC );                                DBERRHANDLE_PROC    dbprocerrhandle(PDBHANDLE , DBERRHANDLE_PROC );                DBMSGHANDLE_PROC    dbprocmsghandle(PDBHANDLE , DBMSGHANDLE_PROC );                                /*****************************************************************************                * Function Prototypes    *                *****************************************************************************/                                // Two-phase commit functions                int    abort_xact(PDBPROCESS , DBINT );                void    build_xact_string(LPCSTR , LPCSTR , DBINT , LPSTR );                void    close_commit(PDBPROCESS );                int    commit_xact(PDBPROCESS , DBINT );                PDBPROCESS    open_commit(PLOGINREC , LPCSTR );                int    remove_xact(PDBPROCESS , DBINT , INT );                int    scan_xact(PDBPROCESS , DBINT );                DBINT    start_xact(PDBPROCESS , LPCSTR , LPCSTR , INT );                int    stat_xact(PDBPROCESS , DBINT );                                // BCP functions                DBINT    bcp_batch(PDBPROCESS );                int    bcp_bind(PDBPROCESS , LPCBYTE , INT , DBINT , LPCBYTE , INT , INT , INT );                int    bcp_colfmt(PDBPROCESS , INT , BYTE , INT , DBINT , LPCBYTE , INT , INT );                int    bcp_collen(PDBPROCESS , DBINT , INT );                int    bcp_colptr(PDBPROCESS , LPCBYTE , INT );                int    bcp_columns(PDBPROCESS , INT );                int    bcp_control(PDBPROCESS , INT , DBINT );                DBINT    bcp_done(PDBPROCESS );                int    bcp_exec(PDBPROCESS , LPDBINT );                int    bcp_init(PDBPROCESS , LPCSTR , LPCSTR , LPCSTR , INT );                int    bcp_moretext(PDBPROCESS , DBINT , LPCBYTE );                int    bcp_readfmt(PDBPROCESS , LPCSTR );                int    bcp_sendrow(PDBPROCESS );                int    bcp_setl(PLOGINREC , BOOL );                int    bcp_writefmt(PDBPROCESS , LPCSTR );                                // Standard DB-Library functions                LPCBYTE    dbadata(PDBPROCESS , INT , INT );                DBINT    dbadlen(PDBPROCESS , INT , INT );                int    dbaltbind(PDBPROCESS , INT , INT , INT , DBINT , LPCBYTE );                int    dbaltcolid(PDBPROCESS , INT , INT );                DBINT    dbaltlen(PDBPROCESS , INT , INT );                int    dbaltop(PDBPROCESS , INT , INT );                int    dbalttype(PDBPROCESS , INT , INT );                DBINT    dbaltutype(PDBPROCESS , INT , INT );                                int    dbanullbind(PDBPROCESS , INT , INT , LPCDBINT );                //int    dbbind(PDBPROCESS dbproc, INT , INT , DBINT , LPBYTE );                int dbbind (PDBPROCESS dbproc, int column, int vartype, DBINT varlen, LPBYTE varaddr );                LPCBYTE    dbbylist(PDBPROCESS , INT , LPINT );                int    dbcancel(PDBPROCESS );                int    dbcanquery(PDBPROCESS );                LPCSTR    dbchange(PDBPROCESS );                int    dbclose(PDBPROCESS );                void    dbclrbuf(PDBPROCESS , DBINT );                int    dbclropt(PDBPROCESS , INT , LPCSTR );                int    dbcmd(PDBPROCESS , LPCSTR );                int    dbcmdrow(PDBPROCESS );                bool    dbcolbrowse(PDBPROCESS , INT );                int    dbcolinfo(PDBHANDLE , INT , INT , INT , LPDBCOL );                DBINT    dbcollen(PDBPROCESS , INT );                LPCSTR    dbcolname(PDBPROCESS , INT );                LPCSTR    dbcolsource(PDBPROCESS , INT );                int    dbcoltype(PDBPROCESS , INT );                DBINT    dbcolutype(PDBPROCESS , INT );                int    dbconvert(PDBPROCESS , INT , LPCBYTE , DBINT , INT , LPBYTE , DBINT );                DBINT    dbcount(PDBPROCESS );                int    dbcurcmd(PDBPROCESS );                DBINT    dbcurrow(PDBPROCESS );                int    dbcursor(PDBCURSOR , INT , INT , LPCSTR , LPCSTR );                int    dbcursorbind(PDBCURSOR , INT , INT , DBINT , LPDBINT , LPBYTE );                int    dbcursorclose(PDBHANDLE );                int    dbcursorcolinfo(PDBCURSOR , INT , LPSTR , LPINT , LPDBINT , LPINT );                int    dbcursorfetch(PDBCURSOR , INT , INT );                int    dbcursorfetchex(PDBCURSOR , INT , DBINT , DBINT , DBINT );                int    dbcursorinfo(PDBCURSOR , LPINT , LPDBINT );                int    dbcursorinfoex(PDBCURSOR , LPDBCURSORINFO );                PDBCURSOR    dbcursoropen(PDBPROCESS , LPCSTR , INT , INT , UINT , LPDBINT );                LPCBYTE    dbdata(PDBPROCESS , INT );                bool    dbdataready(PDBPROCESS );                int    dbdatecrack(PDBPROCESS , LPDBDATEREC , LPCDBDATETIME );                DBINT    dbdatlen(PDBPROCESS , INT );                bool    dbdead(PDBPROCESS );                void    dbexit();                int    dbenlisttrans(PDBPROCESS , LPVOID );                int    dbenlistxatrans(PDBPROCESS , BOOL );                //C    extern RETCODE    dbfcmd (PDBPROCESS, LPCSTR, ...);                INT    dbfcmd(PDBPROCESS , LPCSTR ,...);                DBINT    dbfirstrow(PDBPROCESS );                void    dbfreebuf(PDBPROCESS );                void    dbfreelogin(PLOGINREC );                void    dbfreequal(LPCSTR );                LPSTR    dbgetchar(PDBPROCESS , INT );                short    dbgetmaxprocs();                int    dbgetoff(PDBPROCESS , DBUSMALLINT , INT );                uint    dbgetpacket(PDBPROCESS );                int    dbgetrow(PDBPROCESS , DBINT );                int    dbgettime();                LPVOID    dbgetuserdata(PDBPROCESS );                bool    dbhasretstat(PDBPROCESS );                LPCSTR    dbinit();                bool    dbisavail(PDBPROCESS );                bool    dbiscount(PDBPROCESS );                bool    dbisopt(PDBPROCESS , INT , LPCSTR );                DBINT    dblastrow(PDBPROCESS );                PLOGINREC    dblogin();                int    dbmorecmds(PDBPROCESS );                int    dbmoretext(PDBPROCESS , DBINT , LPCBYTE );                LPCSTR    dbname(PDBPROCESS );                int    dbnextrow(PDBPROCESS );                int    dbnullbind(PDBPROCESS , INT , LPCDBINT );                int    dbnumalts(PDBPROCESS , INT );                int    dbnumcols(PDBPROCESS );                int    dbnumcompute(PDBPROCESS );                int    dbnumorders(PDBPROCESS );                int    dbnumrets(PDBPROCESS );                PDBPROCESS    dbopen(PLOGINREC , LPCSTR );                int    dbordercol(PDBPROCESS , INT );                int    dbprocinfo(PDBPROCESS , LPDBPROCINFO );                void    dbprhead(PDBPROCESS );                int    dbprrow(PDBPROCESS );                LPCSTR    dbprtype(INT );                LPCSTR    dbqual(PDBPROCESS , INT , LPCSTR );                DBINT    dbreadpage(PDBPROCESS , LPCSTR , DBINT , LPBYTE );                DBINT    dbreadtext(PDBPROCESS , LPVOID , DBINT );                int    dbresults(PDBPROCESS );                LPCBYTE    dbretdata(PDBPROCESS , INT );                DBINT    dbretlen(PDBPROCESS , INT );                LPCSTR    dbretname(PDBPROCESS , INT );                DBINT    dbretstatus(PDBPROCESS );                int    dbrettype(PDBPROCESS , INT );                int    dbrows(PDBPROCESS );                int    dbrowtype(PDBPROCESS );                int    dbrpcinit(PDBPROCESS , LPCSTR , DBSMALLINT );                int    dbrpcparam(PDBPROCESS , LPCSTR , BYTE , INT , DBINT , DBINT , LPCBYTE );                int    dbrpcsend(PDBPROCESS );                int    dbrpcexec(PDBPROCESS );                void    dbrpwclr(PLOGINREC );                int    dbrpwset(PLOGINREC , LPCSTR , LPCSTR , INT );                int    dbserverenum(USHORT , LPSTR , USHORT , LPUSHORT );                void    dbsetavail(PDBPROCESS );                int    dbsetmaxprocs(SHORT );                int    dbsetlname(PLOGINREC , LPCSTR , INT );                int    dbsetlogintime(INT );                int    dbsetlpacket(PLOGINREC , USHORT );                int    dbsetnull(PDBPROCESS , INT , INT , LPCBYTE );                int    dbsetopt(PDBPROCESS , INT , LPCSTR );                int    dbsettime(INT );                void    dbsetuserdata(PDBPROCESS , LPVOID );                int    dbsqlexec(PDBPROCESS );                int    dbsqlok(PDBPROCESS );                int    dbsqlsend(PDBPROCESS );                int    dbstrcpy(PDBPROCESS , INT , INT , LPSTR );                int    dbstrlen(PDBPROCESS );                bool    dbtabbrowse(PDBPROCESS , INT );                int    dbtabcount(PDBPROCESS );                LPCSTR    dbtabname(PDBPROCESS , INT );                LPCSTR    dbtabsource(PDBPROCESS , INT , LPINT );                int    dbtsnewlen(PDBPROCESS );                LPCDBBINARY    dbtsnewval(PDBPROCESS );                int    dbtsput(PDBPROCESS , LPCDBBINARY , INT , INT , LPCSTR );                LPCDBBINARY    dbtxptr(PDBPROCESS , INT );                LPCDBBINARY    dbtxtimestamp(PDBPROCESS , INT );                LPCDBBINARY    dbtxtsnewval(PDBPROCESS );                int    dbtxtsput(PDBPROCESS , LPCDBBINARY , INT );                int    dbuse(PDBPROCESS , LPCSTR );                bool    dbvarylen(PDBPROCESS , INT );                bool    dbwillconvert(INT , INT );                int    dbwritepage(PDBPROCESS , LPCSTR , DBINT , DBINT , LPBYTE );                int    dbwritetext(PDBPROCESS , LPCSTR , LPCDBBINARY , DBTINYINT , LPCDBBINARY , BOOL , DBINT , LPCBYTE );                int    dbupdatetext(PDBPROCESS , LPCSTR , LPCDBBINARY , LPCDBBINARY , INT , DBINT , DBINT , LPCSTR , DBINT , LPCDBBINARY );                                                                调用例子:                                                代码                module test;                                import sqldb;                import std.c.stdio;                import std.string;                                int main(){                                    PDBPROCESS    dbproc;    // The connection with SQL Server.                    PLOGINREC    login;    // The login information.                    DBCHAR    name[100];                    DBCHAR    city[100];                                    // Initialize DB-Library.                    dbinit();                                    // Get a LOGINREC.                    login = dblogin ();                    dbsetlname (login, "sa",DBSETUSER);                    dbsetlname (login, "",DBSETPWD);                    dbsetlname (login, "example",DBSETAPP);                                    // Get a DBPROCESS structure for communication with SQL Server.                    dbproc = dbopen (login, "BM");                                    // Retrieve some columns from the authors table in the pubs database.                                    // First, put the command into the command buffer.                    dbcmd (dbproc, "SELECT cpm,ccd FROM pt..tzl_sp");                    dbcmd (dbproc, " WHERE CID < 130 ");                                    // Send the command to SQL Server and start execution.                    dbsqlexec (dbproc);                                    // Process the results.                    if (dbresults (dbproc) == SUCCEED)                    {                        // Bind column to program variables.                        dbbind (dbproc, 1, NTBSTRINGBIND, 0, name);                        dbbind (dbproc, 2, NTBSTRINGBIND, 0, city);                                        // Retrieve and print the result rows.                        while (dbnextrow(dbproc) !=    NO_MORE_ROWS)                        {                                printf ("%s from %s\n", toStringz(name), toStringz(city));                        }                    }                    // Close the connection to SQL Server.                    dbexit ();                    return 0;                }                4.参考http://qiezi.javaeye.com/blog/26632( lastupdate:20070427 最新文章请访问http://www.d-programming-language-china.org )关于一大步成功社区:yidabu提倡在交流中学习,在分享中提高收集感兴趣的知识,写下心得,通过网络与别人一起分享理解一点就实践一步,收获什么就分享什么,成功就是这样一点点一步步累积起来的网络只是一个工具,只有自己身心提高才是实实在在的。d-programming-language-china.org为大家提供一个学习交流各种知识的平台
页: [1]
查看完整版本: 让D访问其他应用程序