Linux下使用C/C 访问数据库——SQL Server篇
作者 佚名技术
来源 Linux系统
浏览
发布时间 2012-05-17
|
在Linux下连接MSSQL是一件很痛苦的事,微软同志没有提供任何接口给开发人员,大约他们认为要用MSSQL的,只可能是windows的操作系统.还好,MSSQL是从Sybase衍生出来的,有一些哥们做了一些Sybase的Linux下的连接库,这些连接库同时也能支持MSSQL,FreeTDS就是这样的一个东东.
这篇文章的受用读者,我想是那些希望在Linux或Unix下编写C或C 程序来连接MSSQL2000的兄弟们,我就是这样的.同时,那些写PHP的哥们也可以参考一下,当然如果你是用PHP的,你恐怕还要知道APACHE以及PHP脚本的安装,或者关于PHP自定义Module的开发,可以参考我以前写的一篇Blog(PHP5自定义Module开发).
下面开始我们的探索之旅:
一、相关软件
我们需要FreeTDS的安装包,可以在这个地址下载到:http://ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz
现在的最新版是0.82
其次就是大家需要自己搭建C 的开发环境了.
二、软件安装、配置
# tar zxvf freetds-stable.tgz(解压)
# ./configure --prefix=/usr/local/freetds (指定FreeTDS安装路径) --with-tdsver=8.0 --enable-msdblib (设置TDS版本,支持SQL Server 2000)
# make
# make install
将freetds的库文件所在路径配置到LD_LIBRARY_PATH参数中: $ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/freetds/lib/: 这么作的目的是为了避免加载FreeTds库文件加载不上的情况.
三、程序开发
不多说了,还是直接上代码:
/* * SyBaseManager.h * * Created .: Feb 18, 2009 * Author: Steven Wee */
#ifndef SYBASEMANAGER_H_ #define SYBASEMANAGER_H_
#include "../Common/CheckStringTools.h"
#include <string> #include <vector> #include <iostream> #include <assert.h> #include <errno.h> #include <stdlib.h> #include <string.h>
#include <sybfront.h> #include <sybdb.h>
using namespace std;
class SybaseManager { public: SybaseManager(std::string hosts, std::string userName, std::string password, std::string dbName, unsigned int port); ~SybaseManager(); /* * Init SQL Server * @param hosts: Host IP address * @param userName: Login UserName * @param password: Login Password * @param dbName: Database Name * @param port: Host listen port number */ void initConnection(); /* * Making query from database * @param mysql: MySQL Object * @param sql: Running SQL command */ bool runSQLCommand(std::string sql); /** * Destroy MySQL object * @param mysql MySQL object */ void destroyConnection(); bool getConnectionStatus(); vector<vector<string> > getResult(); protected: void setUserName(std::string userName); void setHosts(std::string hosts); void setPassword(std::string password); void setDBName(std::string dbName); void setPort(unsigned int port); private: |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn
为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
|