首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

c语言究竟如何学?

2013-02-05 
c语言究竟怎么学???????????各位神~,要实现用c语言连接数据库怎么实现。。求代码。或函数。。[解决办法]引用:各

c语言究竟怎么学???????????
各位神~,要实现用c语言连接数据库怎么实现。。求代码。或函数。。
[解决办法]

引用:
各位神~,要实现用c语言连接数据库怎么实现。。求代码。或函数。。


下个数据库3方库和源码,直接调函数..
[解决办法]
你用的什么数据库?一般的数据库发布时都会发布相关的对外接口,直接调用接口就可以了.
[解决办法]
参考(http://www.sqlite.com.cn/MySqlite/4/461.Html)操作SQLite数据库。
[解决办法]
连接sql的数据库比较好

现在网上都有现成的代码 还ado助手
[解决办法]
引用:
连接sql的数据库比较好

现在网上都有现成的代码 还ado助手

++
[解决办法]
最简单的sqlite数据库 网上教学一堆 跟着一步步做 很快就会连上
[解决办法]
下个开源的iproute2,里面的文件misc/arpd.c里面有很多例子,选取部分如下:
int do_one_request(struct nlmsghdr *n)
{
struct ndmsg *ndm = NLMSG_DATA(n);
int len = n->nlmsg_len;
struct rtattr * tb[NDA_MAX+1];
struct dbkey key;
DBT dbkey, dbdat;
int do_acct = 0;

if (n->nlmsg_type == NLMSG_DONE) {
dbase->sync(dbase, 0);

/* Now we have at least mirror of kernel db, so that
 * may start real resolution.
 */
do_sysctl_adjustments();
return 0;
}

if (n->nlmsg_type != RTM_GETNEIGH && n->nlmsg_type != RTM_NEWNEIGH)
return 0;

len -= NLMSG_LENGTH(sizeof(*ndm));
if (len < 0)
return -1;

if (ndm->ndm_family != AF_INET 
[解决办法]

    (ifnum && !handle_if(ndm->ndm_ifindex)) 
[解决办法]

    ndm->ndm_flags 
[解决办法]

    ndm->ndm_type != RTN_UNICAST 
[解决办法]

    !(ndm->ndm_state&~NUD_NOARP))
return 0;

parse_rtattr(tb, NDA_MAX, NDA_RTA(ndm), len);

if (!tb[NDA_DST])
return 0;

key.iface = ndm->ndm_ifindex;
memcpy(&key.addr, RTA_DATA(tb[NDA_DST]), 4);
dbkey.data = &key;
dbkey.size = sizeof(key);

if (dbase->get(dbase, &dbkey, &dbdat, 0) != 0) {
dbdat.data = 0;
dbdat.size = 0;
}

if (n->nlmsg_type == RTM_GETNEIGH) {
if (!(n->nlmsg_flags&NLM_F_REQUEST))
return 0;

if (!(ndm->ndm_state&(NUD_PROBE
[解决办法]
NUD_INCOMPLETE))) {
stats.app_bad++;
return 0;


}

if (ndm->ndm_state&NUD_PROBE) {
/* If we get this, kernel still has some valid
 * address, but unicast probing failed and host
 * is either dead or changed its mac address.
 * Kernel is going to initiate broadcast resolution.
 * OK, we invalidate our information as well.
 */
if (dbdat.data && !IS_NEG(dbdat.data))
stats.app_neg++;

dbase->del(dbase, &dbkey, 0);
} else {
/* If we get this kernel does not have any information.
 * If we have something tell this to kernel. */
stats.app_recv++;
if (dbdat.data && !IS_NEG(dbdat.data)) {
stats.app_success++;
respond_to_kernel(key.iface, key.addr, dbdat.data, dbdat.size);
return 0;
}

/* Sheeit! We have nothing to tell. */
/* If we have recent negative entry, be silent. */
if (dbdat.data && NEG_VALID(dbdat.data)) {
if (NEG_CNT(dbdat.data) >= active_probing) {
stats.app_suppressed++;
return 0;
}
do_acct = 1;
}
}

if (active_probing &&
    queue_active_probe(ndm->ndm_ifindex, key.addr) == 0 &&
    do_acct) {
NEG_CNT(dbdat.data)++;
dbase->put(dbase, &dbkey, &dbdat, 0);
}
} else if (n->nlmsg_type == RTM_NEWNEIGH) {
if (n->nlmsg_flags&NLM_F_REQUEST)
return 0;

if (ndm->ndm_state&NUD_FAILED) {
/* Kernel was not able to resolve. Host is dead.
 * Create negative entry if it is not present
 * or renew it if it is too old. */
if (!dbdat.data 
[解决办法]

    !IS_NEG(dbdat.data) 
[解决办法]

    !NEG_VALID(dbdat.data)) {
__u8 ndata[6];
stats.kern_neg++;
prepare_neg_entry(ndata, time(NULL));
dbdat.data = ndata;
dbdat.size = sizeof(ndata);
dbase->put(dbase, &dbkey, &dbdat, 0);
}
} else if (tb[NDA_LLADDR]) {
if (dbdat.data && !IS_NEG(dbdat.data)) {
if (memcmp(RTA_DATA(tb[NDA_LLADDR]), dbdat.data, dbdat.size) == 0)
return 0;
stats.kern_change++;
} else {
stats.kern_new++;
}
dbdat.data = RTA_DATA(tb[NDA_LLADDR]);
dbdat.size = RTA_PAYLOAD(tb[NDA_LLADDR]);
dbase->put(dbase, &dbkey, &dbdat, 0);
}
}
return 0;
}


热点排行