免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: zhoukun
打印 上一主题 下一主题

c语言连接数据库为何如此复杂 [复制链接]

论坛徽章:
1
双子座
日期:2015-01-04 14:25:06
21 [报告]
发表于 2008-05-03 15:49 |只看该作者
原帖由 arust 于 2008-4-30 13:06 发表
PostgreSQL

ecpg还不错

论坛徽章:
0
22 [报告]
发表于 2008-05-03 18:41 |只看该作者
主要问题还是LZ自己不熟悉。

论坛徽章:
0
23 [报告]
发表于 2008-05-03 19:25 |只看该作者
原帖由 wwwsq 于 2008-5-3 02:27 发表


我们公司同时用了MSSQL和MySQL,发现正版的MSSQL老是出问题,反而是免费的MySQL一直稳定工作。
我不想探究是不是我们水平不够,我们公司已经打算全部切换到MySQL了。


应该是你们的问题。 mssql 用起来还是没有问题的。 如果mysql 真的非常好,那么mssql 就不用混了。

论坛徽章:
0
24 [报告]
发表于 2008-05-03 20:07 |只看该作者
OCI  - Oracle自己的接口,据说比较快;
ProC - 不错的方式,好像很多系统这种用法,跑在中间件上;
OTL  - 开源的包 http://otl.sourceforge.net/;

好像也有一些开源包..你找找看..

论坛徽章:
0
25 [报告]
发表于 2008-05-03 21:19 |只看该作者
使用proc极方便

下面是一个连接oracle的函数,支持tns
#include <sqlca.h>

EXEC SQL INCLUDE SQLDA;
EXEC SQL INCLUDE ORACA;
EXEC ORACLE OPTION (ORACA=YES);

int ConnectDbByTns(char *psUserName, char *psPasswd, char *psTnsName)
{
EXEC SQL BEGIN DECLARE SECTION;
        char lsUserName[100];
        char lsPasswd[500];
        char lsTnsName[100];
EXEC SQL END DECLARE SECTION;

        strcpy(lsUserName, psUserName);
        strcpy(lsPasswd, psPasswd);
        strcpy(lsTnsName, psTnsName);

        EXEC SQL WHENEVER SQLERROR CONTINUE;
        EXEC SQL WHENEVER NOT FOUND CONTINUE;
        EXEC SQL WHENEVER SQLWARNING CONTINUE;

        oraca.orastxtf = ORASTFERR;        /*        save SQL statement        */

        if (strlen(lsTnsName) == 0)
        {
                EXEC SQL CONNECT :lsUserName identified by :lsPasswd;
        }
        else
                EXEC SQL CONNECT :lsUserName identified by :lsPasswd using :lsTnsName;
       
        if (sqlca.sqlcode!=0)
        {
                printf("连接数据库失败!user:%s sqlcode:%d", lsUserName, sqlca.sqlcode);
                return -1;
        }

        printf("Database connected.\n");

    return 0;
}

论坛徽章:
0
26 [报告]
发表于 2008-05-04 00:18 |只看该作者
关键在于有没有把接口进行抽象.
有的话就方便了.

论坛徽章:
0
27 [报告]
发表于 2008-05-04 14:54 |只看该作者
原帖由 eagle518 于 2008-4-30 21:21 发表
使用ezdbc吧,连接7种数据库api统一,跨平台,入手容易。
1. MySQL
2. Oracle
3. Informix
4. Sybase
5. MS SqlServer
6. PostgreSQL
7. DB2

http://www.ezdbc.com


7种DB的API统一,不见得就一定的好的解决方案。
不同的DB的特性是不一样的,如果API可以统一的话,就一定有取舍,那么对DB的应用就不能做到最优化,一些特性也无法使用。
特别是同一个业务逻辑,在不同的DB上会产生不同的效果,具体的案例可以看一下〈ORACLE编程的艺术〉一书,作者就是"ASK TOM"的栏目主持人

论坛徽章:
0
28 [报告]
发表于 2008-05-05 15:09 |只看该作者
看见熟人了:wink:

论坛徽章:
0
29 [报告]
发表于 2008-05-05 15:58 |只看该作者
mysql 超级好

论坛徽章:
0
30 [报告]
发表于 2008-05-05 20:26 |只看该作者
原帖由 doni 于 2008-5-4 14:54 发表


7种DB的API统一,不见得就一定的好的解决方案。
不同的DB的特性是不一样的,如果API可以统一的话,就一定有取舍,那么对DB的应用就不能做到最优化,一些特性也无法使用。
特别是同一个业务逻辑,在不同的 ...


你说的没错,但对于多数应用特别是要求跨平台跨数据库的应用ezdbc非常合适,性能绝对可以接受,
但若有对特定数据库的特殊特性有特别要求,那么ezdbc只能通过sql语句来部分满足。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP