当前位置:  技术问答>linux和unix

linux下在C中嵌入SQL连接免费数据库PostgreSQL的问题

    来源: 互联网  发布时间:2016-02-04

    本文导语:  我想在linux下用在C语言中应用嵌入SQL的方法连接PostgreSQL数据库,看了一些书最后通过PQconnectdb的方式连上了但是没弄明白怎么用嵌入SQL语法的方式来连接和操作数据库 谁能给我一个具体的能成功编译运行的例子啊?...

我想在linux下用在C语言中应用嵌入SQL的方法连接PostgreSQL数据库,看了一些书最后通过PQconnectdb的方式连上了但是没弄明白怎么用嵌入SQL语法的方式来连接和操作数据库

谁能给我一个具体的能成功编译运行的例子啊?最好是有详细注释的

|
/*建数据库过程略*/
/*结构*/
/*数据库名:wangxsDB
表名:t
a b c d e
1 1 a 1 1
2 2 b 2 2
3 3 c 3 3
4 4 d 4 4
5 5 e 5 5
6 6 f 6 6
*/
/*代码*/
#include 
#include 
EXEC SQL include sqlca;
main()
 {
   EXEC SQL BEGIN DECLARE SECTION;
  char result[3];
  char database[20];
  char username[20];
  char password[20];  
  EXEC SQL END DECLARE SECTION;
   
  
  strcpy(database,"wangxsDB");
  strcpy(username,"wangxs");  
  EXEC SQL CONNECT TO :database USER :username;
  EXEC SQL SELECT a INTO :result FROM t WHERE a=1;

   printf( "result = %sn", result );
  EXEC SQL DISCONNECT; 
   
}

/*编译*/

/*?.dbc

ecpg ?.dbc -> ?.c*/

ecpg esqltest.dbc

[wangxs@localhost ~]$ cc ?.c -I /usr/local/postgre/include/ -L /usr/local/p
ostgre/lib/ -lecpg -lpq -o ?

/*或者*/

ecpg esqltest.dbc

[root@localhost wangxs]# cc ?.c -I /var/lib/pgsql/include -L /var/lib/pgsql
/lib -lecpg -lpq  -o ?

/*makefile的编写*/

INCLUDE=/usr/local/postgre/include/
LIB=/usr/local/postgre/lib/
FILEDBC=esqltest.dbc
FILEC=esqltest.c
FILE=esqltest
ESQL=ecpg
CC=cc

.exe:$(FILEC) 
$(CC) -I $(INCLUDE) -L $(LIB) -lecpg -lpq -o $(FILE)
.c:$(FILEDBC)
$(ESQL) $(FILEDBC)

|
//File:mypgsql.h
#include 
#include 
#include 
#include 
#include 
#include 
#include 

using namespace std;
//static pthread_mutex_t hci_mutex=PTHREAD_MUTEX_INITIALIZER;

class mypgsql{
private:
PGconn *conn;
PGresult *res;
int row;
int col;
public:
vector vcol_head; //表头名
vector vdata; //表数据,按行优先
mypgsql(string hostaddr="127.0.0.1",string dbmane=NULL,string user="usr"):vcol_head(),vdata()
{
string coninfo;
coninfo="hostaddr="+hostaddr+" "+"dbname="+dbmane+" user="+user;
// sprintf(coninfo, "hostaddr=%s dbname=%s", hostaddr, dbmane);
conn = PQconnectdb(coninfo.c_str());

if (PQstatus(conn) != CONNECTION_OK)
{
fprintf(stderr, "Connection to database failed: %s n", PQerrorMessage(conn));
PQfinish(conn);
exit(1);
}
// pthread_mutex_lock(&hci_mutex);
row = col = 0;
}

int exe(string s_exe)
{
res = PQexec(conn, s_exe.c_str());
if (PQresultStatus(res) == PGRES_TUPLES_OK) //成功执行一个返回数据的查询查询(比如 SELECT 或者 SHOW)
    {
row = PQntuples(res);
col = PQnfields(res);
for(int i=0; i

    
 
 

您可能感兴趣的文章:

  • linux下的postgresql好像不完整,不带ecpg吗?
  • 请问 是否有终端可以在Windows下控制Linux服务器下的postgreSQL?
  • 关于linux系统下postgresql数据库远程访问问题
  • 在linux下postgresql 的压力测试工具
  • 关于linux系统下Postgresql数据库问题
  • 快来抢购印有Linux、Java、MySQL、PostgreSQL的Logo的文件衫!(帮顶有分!)
  • Linux下用C语言连接免费数据库PostgreSQL的问题
  • 有谁做过嵌入式 Linux开发?是否有嵌入式Linux的JVM?
  • 问一个弱弱的问题:做嵌入式开发,宿主机的Linux版本一定要跟目标机上的嵌入式Linux版本一致么?
  • 请问在哪下载嵌入式Linux开发平台???想学嵌入式开发!!!
  • 嵌入式linux开发:一段代码在windows平台用VC编译运行正常,在linux平台用gcc编译运行正常,但是用arm-linux-gcc编译在嵌入式板子上运行就不正常.
  • 我怎么糊涂了:想开发嵌入式系统(目标机采用UCLINUX嵌入式操作系统),在RED HAT LINUX下开发,选用什么工具呢?QT还是qt embedded?
  • 关于“嵌入式Linux”
  • linux运维转linux嵌入式
  • 嵌入式linux与通常linux有什么不同
  • 求嵌入式Linux的入门书籍!
  • linux 嵌入式开发用买开发板吗?
  • linux与linux嵌入式
  • 现在LINUX主要用在哪些嵌入式设备上?
  • Linux的嵌入式开发,请高手指点
  • vc++与Linux嵌入式
  • 嵌入式linux 组播接收问题
  • 嵌入式linux开发与防火墙系统linux开发
  • 如何开发嵌入式Linux操作系统?
  • Linux 用什么工具进行嵌入式开发。
  • java 还是LINUX嵌入式???
  • Linux环境下,“PC机的驱动”与“嵌入式驱动”有什么区别?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 在XP下使用VMWare安装了Linux AS 5.6之后,使用FTP工具可以远程连接Linux,而在cmd命令行中却连接不上,什么原因 ?
  • linux 有线连接了却显示有线连接断开是怎么回事
  • 请问unix/linux下动态连接库和静态连接库有什么区别?
  • LINUX中连接C++的库怎么连接.库在什么位置,还有什么特殊命令吗?
  • 在linux下可以使用dao方式连接数据库吗?可以连接musql吗?回答就给分!急
  • 在线请教:linux下用MySQL C API 连接MySQL 4.1.12出现的连接问题,提示升级客户端!!!!!!
  • ftp连接问题,就是linux连接windows ftp的问题,高手请进(在线等待)!!!!!
  • Linux下的C++程序怎么连接WIN2000下的SQL Server 2000?或者如何连接MySQL?
  • linux 下连接创建连接数据库程序,什么都可以 。谁知道300分
  • [疑问] [linux网络连接]Linuxmint网络连接
  • LINUX C 进行TCP网络连接,怎样设置连接超时时间?
  • 我在telnet到linux上的时候报不能打开到主机的连接, 在端口23: 连接失败 请问是什么原因
  • linux vsftpd连接问题
  • Linux 下的C语言实现数据库连接池操作。
  • Linux 代理 一个客户端来就创建一个连接
  • SecureCRT连接linux。为什么我在linux的/etc/sysconfig/下找不到iptables?
  • linux问题 secureCRT连接的问题 在线等急!~~
  • 我想用Linux的串口和S3c2410x连接,请问在Linux里面怎么找到那个超级终端?
  • 高分求教,linux下的GPRS连接!!!
  • 用xmanager远程连接不上linux桌面
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux
  • linux命令大全详细分类介绍及常用linux命令文档手册下载


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3