ubuntu 交叉编译freetds步骤,及C程序设计

freetds版本:freetds-dev.1.00.514

ubuntu版本:16.04

 

一、步骤

只说一点,在下面步骤之前要先配置一下字符集,要不然连接数据库后的中文全是乱码。

修改freetds.conf,添加客户端字符编码,改为UTF-8(根据需要也可以是GBK)

保存后退出,其他过程比较简单,网上资料多,不详细介绍了

  1../configure  CC=arm--linux-gcc --prefix=/home/test/freetds-arm  --with-tdsver=auto  --enable-msdblib  --disable-libiconv  --host=arm-linux --enable-shared --enable-static

 2.make

 3.make install

将freetds-arm路径里的etc/tsql文件复制到arm平台上,就可以直接使用了

二、使用

1.tsql -C  查看信息

这里要把etc下面的三个conf文件及路径也一并放到arm平台上,要不然还是不行滴。。。

 2.tsql -H 192.168.0.112 -p 1433 -U sa -P sa123 连接数据库

这里就可以看到使用的字符集改为UTF-8了,如果是"ISO-8859-1",这是freetds的默认字符集,写数据库时会乱码。

在1>后面输sql语句就行了,使用go来执行命令。

三、C程序设计

#include <stdio.h>  
#include <string.h>  
#include <stdlib.h>  
#include <unistd.h>  
#include <sybfront.h>  
#include <sybdb.h> 

int32_t main()
{
	DBPROCESS *dbprocess;
 
	//建立到MSSQL数据库的连接------------------------
	dbinit();                         		//使用dbinit()函数, 进行freetds操作之前的初始化操作
	LOGINREC *loginrec = dblogin();	  		//建立一个到数据库的连接的句柄
	DBSETLUSER(loginrec, "sa");  		//向句柄中添加连接数据库的用户
	DBSETLPWD(loginrec, "123");          //向数据库连接句柄中添加密码
	DBSETLCHARSET(loginrec, "UTF-8");
	dbprocess = dbopen(loginrec, "127.0.0.1");	//连接数据库,并返回数据库连接结果的句柄
		
	if(dbprocess == FAIL) { 				//如果连接失败
		printf("Connect Fail\n");           //在标准错误中输出信息
		return RET_SQL_OPENERR;             //进程异常退出
		return 1;
	} else {
		printf("Connect sql success\n");
	}

    if(dbuse(dbprocess, "DBTest") == FAIL)      //使用某个数据库,如果使用失败
	{
		printf("open database error\n");
		return 1;                                 //进程异常退出
	} else {
		printf("open database success!\n");
	}

    dbcmd(dbprocess, "");                    //要执行的语句

    //判断执行是否正确
    if(dbsqlexec(dbprocess) == FAIL){ 
		printf("dbcmd error!\n");
		return 1;
	} else {
		printf("dbcmd success!\n");
	}
    
    //取数据
	if((result_code = dbresults(dbprocess)) != NO_MORE_RESULTS && result_code == SUCCEED)
	{
		int8_t data_1[100] = {0};
		int8_t data_2[100] = {0};

		//开始绑定数据
		dbbind(dbprocess, 1, CHARBIND, (int8_t)0, (BYTE*)data_1);
		dbbind(dbprocess, 2, CHARBIND, (int8_t)0, (BYTE*)data_2);

        //遍历结果集合
		while(dbnextrow(dbprocess) != NO_MORE_ROWS)                
		{
		    i_line++;                                //行数
			printf("line[%d]:name is %s, Id is %s\n", i_line, data_1, data_2); 
			strncat(c_result_data[0], data_1, strlen(data_1));
			strncat(c_result_data[0], "|", 1);
			strncat(c_result_data[1], data_2, strlen(data_2));
			strncat(c_result_data[1], "|", 1);

			memset(data_1, 0, 100);
			memset(data_2, 0, 100);
            
		}

		printf("count = %d\n", dbcount(dbprocess));
		printf("row = %d\n", dbcurrow(dbprocess));
	}

    dbclose(dbprocess);
	printf("exit success\n");
}

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Red Hat上安装freeTDSFree True/Active Database Server)的步骤如下: 1. 打开终端或命令行界面。 2. 使用root或具有管理员权限的用户登录。 3. 确保您的系统已更新所有可用包。运行以下命令进行更新: ```sql sudo yum update ``` 4. 安装FreeTDS软件包,您可以使用以下命令之一: 使用包管理器安装: ```arduino sudo yum install freetds-devel ``` 使用包管理器的企业版本(CentOS、Fedora): ```arduino sudo dnf install freetds-devel ``` 这将安装FreeTDS的开发库,用于编译和链接与FreeTDS兼容的应用程序。 5. 安装完成后,您可以使用以下命令验证FreeTDS是否已正确安装: ```lua php -m | grep freetds ``` 如果输出显示了"freetds"或类似的条目,表示FreeTDS已成功安装。 6. 配置FreeTDS的连接信息。通常,您需要提供数据库服务器的IP地址、端口号和数据库名称。您可以在配置文件中指定这些信息。通常,配置文件位于`/etc/freetds/freetds.conf`。可以使用文本编辑器(如vi或nano)打开该文件,并添加或修改以下行: * `server = <数据库服务器地址>`:替换为实际的数据库服务器地址。 * `port = <端口号>`:替换为实际的数据库端口号(通常为默认的1433或385)。 * `database = <数据库名称>`:替换为实际的数据库名称。保存并关闭文件。7. 重新启动任何使用FreeTDS的程序或服务,以确保配置更改生效。 完成上述步骤后,您应该能够在Red Hat上成功安装并配置freeTDS。请注意,具体的安装步骤可能因您的系统配置和版本而有所不同。确保参考Red Hat的官方文档或与相关社区寻求更多帮助,以获得适用于您的特定环境的准确指导。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值