1 去freetds官网下载最新版本的freetds,注意版本号,一般2008版本的就写7.3,2014或者2012写7.4,再往前的数据库就不好使了,具体安装步骤不再说明,然后说一下链接代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<unistd.h>
#include<sybfront.h> //frertds中的文件,找不到则路径寻找/usr/...
#include<sybdb.h> //freetds的文件,如上
int main(void)
{ char szUsername[32]="sa"; //用户名
char szPassword[32]="123456789"; //去sql server 2012中自己填写
char szDBName[32]="test"; //叫text的数据库名字
char szServer[32]=" 192.168.4.40:1433"; //数据库的服务器端口
dbinit(); //初始化
//连接模块
LOGINREC *loginrec=dblogin(); //连接 其中Dblogin是根据用户名和密码连接数据库
DBSETLUSER(loginrec,szUsername);
DBSETLPWD(loginrec,szPassword);
DBPROCESS *dbprocess=dbopen(loginrec,szServer); //打开数据库
if(dbprocess==FAIL) //测试是否连接成功
{
printf("connect SQL Server fail\n");
return -1;
}
else
printf("connect success\n");
//打开模块
if(dbuse(dbprocess,szDBName)==FAIL) //是否能够打开数据库
printf("open database fail\n");
else
printf("open database success\n");
//查询模块
printf("查询数据库表");
dbcmd(dbprocess,"select StuID,Name,Age from Stulnfo");//查询表格并测试是否成功
if(dbsqlexec(dbprocess)==FAIL)
{
printf("chaxun table error")
return -1;
}
DBINT result_code;
char szStuID[20]={};
char szName[80]={};
char szAge[10]={};
int rows=0;
while((result_code=dbresults(dprocess))!=NO_MORE_RESULTS)
{
if(result_code==SUCCEED)
{
dbbind(dbprocess,1,CHARBIND,(DBINT)0,(BYTE*)szStuID);
dbbind(dbprocess,2,CHARBIND,(DBCHAR)0,(BYTE*)szName);
dbbind(dbprocess,3,CHARBIND,(DBCHAR)0,(BYTE*)szAge);
printf("StuID\Name\tAge\n",szStuID);
while(dbnextrow(dbprocess)!=NO_MORE_ROWS)
{
printf("%s\t",szStuID);
printf("%s\t",szName);
printf("%s\n",szAge); }
}
}
//插入模块
printf("往数据库表中插入数据\n");
dbcmd(dbprocess,"insert into Stulnfo(StuID,Name,Age)values(888,'heheda',24)");
if(dbsqlexec(dbprocess)==FAIL) //判定插入的数据是否成功
{
printf("insert into table'Stulnfo'error.\n");
return -1;
}
else
print("insert into table 'Stulnfo' success.\n");
//删除模块
printf("删除记录\n");
dbcmd(dbprocess,"dele form Stulnfo where StuID=888");
if(dbsqlexec(dbprocess)==FAIL)
{
printf("delete 'Stulnfo' error.\n");
return -1;
}
else
printf("delete 'Stulnfo' success.\n");
//关闭
dbclose(dbprocess);
return 0;
}