MingW下的程序访问SQL Server 2008 R2

简介:

MingW下安装FreeTDS:

tar -xvzf /c/mingw/download/freetds-stable.tgz

cd freetds-0.91

./configure --disable-libiconv --with-tdsver=7.1 --enable-msdblib --disable-shared --enable-static

make

make install

注意:

-with-tdsver=7.1中的7.1是目前最大版本,不能设置为8.0、9.0之类,否则将不能连接到SQL Server。比如,我设置为9.0,连接SQL Server 2008 R2就失败了。

MingW下测试FreeTDS代码:

 

 
 
  1. #include <stdio.h>  
  2. #include <sybdb.h>  
  3.   
  4. // 编译:  
  5. // gcc test.c -o testdb -L/local/lib/ -I/local/include -lsybdb -lws2_32 
  6. int main(int argc, char **argv)  
  7. {          
  8.     //初始化db库 
  9.     dbinit(); 
  10.     //设置数据库信息 
  11.     LOGINREC *loginrec = dblogin(); 
  12.     DBSETLUSER(loginrec, "user"); 
  13.     DBSETLPWD(loginrec, "password*"); 
  14.     // 设置UTF-8编码 
  15.     DBSETLCHARSET(loginrec, "UTF-8"); 
  16.     //连接数据库 
  17.     DBPROCESS *dbprocess = dbopen(loginrec, "192.168.0.123:1433"); 
  18.     if(dbprocess == FAIL) 
  19.     { 
  20.         printf("Connect fail\n"); 
  21.         return 0; 
  22.     } 
  23.      
  24.     printf("Connect success\n"); 
  25.      
  26.     //打开test数据库 
  27.     if(dbuse(dbprocess, "test") == FAIL) 
  28.     { 
  29.         printf("Open database fail\n"); 
  30.     } 
  31.     else 
  32.     { 
  33.         printf("Open database success\n"); 
  34.     } 
  35.      
  36.     //查询test表 
  37.     dbcmd(dbprocess, "select id, name from test"); 
  38.     if(dbsqlexec(dbprocess) == FAIL) 
  39.     { 
  40.         printf("Query table error\n"); 
  41.     } 
  42.      
  43.     DBINT result_code; 
  44.     char id[1024]={0}; 
  45.     char value[1024]={0}; 
  46.     while ((result_code = dbresults(dbprocess)) != NO_MORE_RESULTS){ 
  47.         if (result_code == SUCCEED){ 
  48.             dbbind(dbprocess, 1, CHARBIND, (DBINT)0, (BYTE*)id); 
  49.             dbbind(dbprocess, 2, CHARBIND, (DBCHAR)0, (BYTE*)value); 
  50.             while (dbnextrow(dbprocess) != NO_MORE_ROWS){ 
  51.                 printf("id=%s\n", id); 
  52.                 printf("value=%s\n", value); 
  53.             } 
  54.         } 
  55.     } 
  56.     //关闭数据库连接 
  57.     dbclose(dbprocess); 
  58.     return 0; 

 










本文转自 h2appy  51CTO博客,原文链接:http://blog.51cto.com/h2appy/994653,如需转载请自行联系原作者
目录
相关文章
|
8月前
|
存储 SQL 数据库连接
C#程序调用Sql Server存储过程异常处理:调用存储过程后不返回、不抛异常的解决方案
本文分析了C#程序操作Sql Server数据库时偶发的不返回、不抛异常问题,并提出了解决思路。首先解析了一个执行存储过程的函数`ExecuteProcedure`,其功能是调用存储过程并返回影响行数。针对代码执行被阻塞但无异常的情况,文章总结了可能原因,如死锁、无限循环或网络问题等。随后提供了多种解决方案:1) 增加日志定位问题;2) 使用异步操作提升响应性;3) 设置超时机制避免阻塞;4) 利用线程池分离主线程;5) 通过信号量同步线程;6) 监控数据库连接状态确保可用性。这些方法可有效应对数据库操作中的潜在问题,保障程序稳定性。
665 11
|
SQL Oracle 数据库
使用访问指导(SQL Access Advisor)优化数据库业务负载
本文介绍了Oracle的SQL访问指导(SQL Access Advisor)的应用场景及其使用方法。访问指导通过分析给定的工作负载,提供索引、物化视图和分区等方面的优化建议,帮助DBA提升数据库性能。具体步骤包括创建访问指导任务、创建工作负载、连接工作负载至访问指导、设置任务参数、运行访问指导、查看和应用优化建议。访问指导不仅针对单条SQL语句,还能综合考虑多条SQL语句的优化效果,为DBA提供全面的决策支持。
324 11
|
SQL 安全 网络安全
SQL安装程序规则错误解决方案
在安装SQL Server时,遇到安装程序规则错误是一个比较常见的问题
|
SQL 关系型数据库 BI
使用 Webshell 访问 SQL Server 主机并利用 SSRS
使用 Webshell 访问 SQL Server 主机并利用 SSRS
|
SQL 安全 Windows
SQL安装程序规则错误解析与解决方案
在安装SQL Server时,用户可能会遇到安装程序规则错误的问题,这些错误通常与系统配置、权限设置、依赖项缺失或版本不兼容等因素有关
1051 2
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
网络协议 NoSQL 网络安全
【Azure 应用服务】由Web App“无法连接数据库”而逐步分析到解析内网地址的办法(SQL和Redis开启private endpoint,只能通过内网访问,无法从公网访问的情况下)
【Azure 应用服务】由Web App“无法连接数据库”而逐步分析到解析内网地址的办法(SQL和Redis开启private endpoint,只能通过内网访问,无法从公网访问的情况下)
294 0
|
SQL 机器学习/深度学习 开发工具
【机器学习 Azure Machine Learning】Azure Machine Learning 访问SQL Server 无法写入问题 (使用微软Python AML Core SDK)
【机器学习 Azure Machine Learning】Azure Machine Learning 访问SQL Server 无法写入问题 (使用微软Python AML Core SDK)
218 0
|
SQL 网络协议 网络安全
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
589 13