linux 下 sqlserver 连接 与开发准备

这篇具有很好参考价值的文章主要介绍了linux 下 sqlserver 连接 与开发准备。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近需要再linux下开发一个服务链接SQLserver。但是没有相关经验,然后参考了网上的一些博客。有点心得记录如下。

主要参考了这个:

主要思路:采用unixODBC + FreeTDS 封装库的方案来实现

1. 安装驱动包:

我使用离线安装:

Index of /rhel/7/prod/Packages/u/ (microsoft.com)

linux 下 sqlserver 连接 与开发准备

在上面中下载了上图中的2个安装包。 

unixODBC-2.3.7-1.rh.x86_64.rpm 

unixODBC-utf16-2.3.1-1.x86_64.rpm

安装

yum localinstall unixODBC-2.3.7-1.rh.x86_64.rpm
yum localinstall unixODBC-utf16-2.3.1-1.x86_64.rpm

去下面的地址下载freeTDS,最新的包。freetds-1.3.18.tar.gz

FreeTDS.org

tar -zxvf freetds-1.3.18.tar.gz

cd freetds-1.3.18

进入目录之后就开始编译了,但是需要注意一些事情。

需要注意的就是这里的--with-tdsver=7.3,这个非常重要,你需要根据你的数据库版本选择正确的配置项,由于现在大多是SQLserve2008 r2 所以需要选择7.3.

linux 下 sqlserver 连接 与开发准备

 

./configure  --prefix=/usr/local/freetds  --with-tdsver=7.3  --enable-msdblib
 
 主要参数说明:--with-tdsver设置FreeTDS的版本,我这里设置了7.3是为了能连接SQL2008

                    --enable-msdblib是是否允许Microsoft数据库函数库,这里为允许

紧接着;

make && make install

然后我们可以测试一下是否安装成功,切换到目录/usr/local/freetds/bin/tsql -C
如果出现一下命令.说明成功安装了。

linux 下 sqlserver 连接 与开发准备

 

测试数据库是否联通

# /usr/local/freetds/bin/tsql -H 数据库服务器IP  -p 端口号 -U 用户名 -P 密码

/usr/local/freetds/bin/tsql -H 127.0.0.1 -p 1433 -U sa -P '123'

linux 下 sqlserver 连接 与开发准备

如果是我上图中的,证明联通成功。

 C代码示例,参考了Linux下连接Sql Server_linux 联接sql server_zhangatm的博客-CSDN博客

#include <stdio.h> 
#include <string.h> 
#include <stdlib.h> 
#include <unistd.h>  
  
#include <sybfront.h> //freetds头文件 
#include <sybdb.h> //freetds 
  
  
int main(void) 
{ 
    char szUsername[32] = "admin"; 
    char szPassword[32] = "root123"; 
    char szDBName[32] = "db1"; //数据库名 
    char szServer[32] = "192.168.11.112:1433";//数据库服务器:端口 
  
    //初始化db-library 
    dbinit(); 
        
    //连接数据库 
    LOGINREC *loginrec = dblogin(); 
    DBSETLUSER(loginrec, szUsername);        
    DBSETLPWD(loginrec, szPassword); 
    DBPROCESS *dbprocess = dbopen(loginrec, szServer);//连接数据库 
    if(dbprocess == FAIL) 
    { 
        printf("Conect to MS SQL SERVER fail, exit!\n"); 
        return -1;  
    } 
    printf("Connect to MS SQL SERVER success!\n"); 
        
    if(dbuse(dbprocess, szDBName) == FAIL) 
        printf("Open database failed!\n"); 
    else 
        printf("Open database success!\n"); 
        
    //查询数据库 
    printf("[查询数据库表]\n"); 
    dbcmd(dbprocess, "select StuID, Name, Age from StuInfo"); 
    if(dbsqlexec(dbprocess) == FAIL) 
    { 
        printf("Query table 'StuInfo' error.\n"); 
        return -1;  
    } 
      
    DBINT result_code; 
    char szStuID[20]={}; 
    char szName[80]={}; 
    char szAge[10]={}; 
    int rows = 0; 
    while ((result_code = dbresults(dbprocess)) != 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\tName\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 StuInfo(StuID, Name, Age) values(888,'James',28)"); 
    if(dbsqlexec(dbprocess) == FAIL) 
    { 
        printf("insert into table 'StuInfo' error.\n"); 
        return -1;  
    } 
    printf("insert into table 'StuInfo' success.\n"); 
     
    printf("[删除数据库表中的记录]\n"); 
    dbcmd(dbprocess, "delete from StuInfo where StuID=888"); 
    if(dbsqlexec(dbprocess) == FAIL) 
    { 
        printf("delete from table 'StuInfo' error.\n"); 
        return -1;  
    } 
    printf("delete from table 'StuInfo' success.\n"); 
     
    //关闭数据库连接 
    dbclose(dbprocess); 
 
    return 0; 
}  

代码写完之后,编译的时候需要链接正确才能通过,整句话是这样的:

gcc -o dbTest dbTest.c -lrt /usr/lib/libsybdb.a 【一定要加入 -lrt 才行】文章来源地址https://www.toymoban.com/news/detail-495508.html

到了这里,关于linux 下 sqlserver 连接 与开发准备的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 开展自动化方案时,需要考虑哪些内容,开展实施前需要做哪些准备呢?

    选择合适的自动化测试工具 :根据项目的需求和技术栈选择适合的自动化测试工具,如Selenium、Appium、Jenkins等。 确定自动化测试范围 :明确需要自动化的功能模块和业务场景,确定哪些功能需要进行自动化测试,以及测试的重点和优先级。 制定自动化测试计划 :确定测试

    2024年02月10日
    浏览(37)
  • 数字藏品平台的企业需要准备哪些资质证书?

    NFT数字藏品平台在我国经营需要哪些资质牌照呢? 龙翊信安帮大家整理了以下资质牌照,数字藏品平台需要对照自己的业务类型来决定应对具备哪些牌照。 (一) 区块链信息服务备案 NFT的上链、交易等都离不开区块链,根据《区块链信息服务管理规定》规定,需通过国家互联

    2023年04月09日
    浏览(43)
  • 中仕公考:国考进面后资格复审需要准备什么?

    参加国考面试的考生在资格审核阶段需要准备以下材料: 1、本人身份证、学生证或工作证复印件。 2、公共科目笔试准考证复印件。 3、考试报名登记表。 4、本(专)科、研究生各阶段学历、学位证书(应届毕业生没有可以暂时不提供)。 5、报名资料上填写的各类证书材料。

    2024年01月20日
    浏览(52)
  • Linux驱动开发工程师需要掌握哪些技能?

    Linux驱动开发是一项高度技术性的工作,需要深厚的编程技能和对计算机硬件的深入理解。随着物联网、人工智能等领域的快速发展,Linux驱动开发工程师的需求日益增加。在这篇文章中,我将为您介绍一条Linux驱动开发工程师的学习路线,包括必要的技能和知识点。 Linux驱动

    2024年02月05日
    浏览(101)
  • 软件测试实验室申请cnas需要做好哪些资源准备?

    软件测试实验室在准备申请cnas资质前,除了建立完善的软件测试体系、科学的质量管理体系,还需要做好相关资源的准备。本文我们就一起来看一下,cnas官方文件中的资源要求部分,以及对于软件检测实验室,应该做好哪些准备才能满足这些要求。  针对资源要求这部分,

    2024年02月11日
    浏览(46)
  • 学习Python需要准备什么?BoBo仔为您指点明经~~~

    大家好!我是bobo仔,欢迎来阅读我的文章。我的这篇文章是专门为Python新手筹备的,大家一定要好好阅读,做好每一步,完成每一节。 【注:部分内容为作者见解、发现,如有版权侵袭或是信息错误请指出,谢谢!】 首先,Python是非常有使用前景的。 据悉,近期各年级学生

    2024年02月19日
    浏览(41)
  • 测试用例如何评审,有什么准备事项和需要注意的点?

    什么是用例评审 参会人员 何时进行 会前准备 作用 会后 其他注意事项 写在最后   众所周知,对于测试同学来说,在软件研发流程中有两个重要的会议,一个是需求评审会议,另一个是用例评审会议。 不知道大家把“用例评审”放在了什么样的“地位”。 在我看来,用例评

    2024年01月20日
    浏览(43)
  • 双非二本如何入职腾讯?只需要做好这些准备就能进大厂?

    每年的招聘旺季在“金三银四”和“金九银十”这2段时间,许多在春招中没有找到心仪大厂offer的测试小伙伴最近有私信我,想要了解如何在秋招中一举获得心仪大厂的青睐,那今天我就来和大家扒一扒那些大厂自动化测试面试题以及注意事项哦! 话不多说,我们先来上题目

    2023年04月16日
    浏览(42)
  • 电赛专题---一.概述【电赛简介 /信号类需要准备什么?/怎么才能打好电赛?】

    全国大学生电子设计竞赛(National Undergraduate Electronics Design Contest)是教育部和工业和信息化部共同发起的大学生学科竞赛之一,是面向大学生的群众性科技活动,目的在于推动高等学校促进信息与电子类学科课程体系和课程内容的改革。竞赛的特点是与高等学校相关专业的课

    2024年02月16日
    浏览(46)
  • 开学季学生党需要准备哪些数码好物,分享几款实用的数码好物

    开学季来临,新届大一新生也开始准备自己的大学生活,在这时候相信有很多同学都会准备添置一些数码好物。很多同学都想找日常会使用到的一些数码产品,但又希望是性价比高的且实用性好的。小篇对数码产品方面多少有点了解,下面小篇就给大家推荐几款大学新生需要

    2024年02月03日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包