免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2939 | 回复: 2
打印 上一主题 下一主题

linux c开发postgresQL的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-12-11 17:02 |只看该作者 |倒序浏览
如何用linux c实现在postgresQL的数据库中插入一条语句啊?求代码实现。小弟谢了

论坛徽章:
3
数据库技术版块每日发帖之星
日期:2015-06-18 22:20:00数据库技术版块每日发帖之星
日期:2015-06-21 22:20:00数据库技术版块每日发帖之星
日期:2015-08-27 06:20:00
2 [报告]
发表于 2012-12-12 14:15 |只看该作者
示例代码:
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <libpq-fe.h>


  4. int main(int argc, char * argv[])
  5. {
  6.     PGconn *conn;
  7.     PGresult * dataset;
  8.     ConnStatusType pgstatus;
  9.     char connstr[1024];
  10.     char szSQL[2048];
  11.     char * paramValues = NULL;
  12.     int nParams = 0;
  13.    
  14.    
  15.     sprintf(connstr,
  16.             "hostaddr=%s dbname=%s port=%d user=%s password=%s",
  17.             "127.0.0.1", "osdba", 5432, "osdba", "osdba");
  18.     conn = PQconnectdb(connstr);
  19.     pgstatus = PQstatus(conn);
  20.     if (pgstatus == CONNECTION_OK)
  21.     {
  22.         printf("Connect database success!\n");
  23.     }
  24.     else
  25.     {
  26.         printf("Connect database fail:%s\n",PQerrorMessage(conn));
  27.         return;
  28.     }
  29.    
  30.     sprintf(szSQL, "insert into test values(1,'aaaaaa')");
  31.     dataset = PQexecParams(conn,
  32.                            szSQL,
  33.                            nParams,     /* 参数个数 */
  34.                            NULL,        /* 让后端推出参数类型 */
  35.                            (const char * const*)paramValues,
  36.                            NULL,        /* 因为是文本,所以必须要参数长度 */
  37.                            NULL,        /* 缺省是全部文本参数 */
  38.                            0);          /* 是否是二进制结果 */

  39.     if(  (PQresultStatus(dataset) == PGRES_COMMAND_OK ) ||(PQresultStatus(dataset) == PGRES_TUPLES_OK))
  40.     {
  41.         printf("Successfully execute SQL : %s\n",szSQL);
  42.     }
  43.     else
  44.     {
  45.         printf("%s\n",PQerrorMessage(conn));
  46.     }
  47.    
  48.     /* 关闭数据库连接并清理 */
  49.     PQfinish(conn);
  50.     return 0;
  51. }
复制代码
编译方法:
gcc -I `pg_config --includedir` -L `pg_config --libdir` pgtest.c -o pgtest -l pq

见下面的演示:
osdba@osdba-work:~/src/ctest$ gcc -I `pg_config --includedir` -L `pg_config --libdir` pgtest.c -o pgtest -l pq
osdba@osdba-work:~/src/ctest$ ./pgtest
./pgtest: error while loading shared libraries: libpq.so.5: cannot open shared object file: No such file or directory
osdba@osdba-work:~/src/ctest$ export LD_LIBRARY_PATH=/usr/local/pgsql9.2.1/lib
osdba@osdba-work:~/src/ctest$ ./pgtest
Connect database fail:could not connect to server: Connection refused
        Is the server running on host "127.0.0.1" and accepting
        TCP/IP connections on port 5432?

osdba@osdba-work:~/src/ctest$ pgstart
server starting
osdba@osdba-work:~/src/ctest$ LOG:  database system was shut down at 2012-10-16 18:21:53 CST
LOG:  database system is ready to accept connections
LOG:  autovacuum launcher started

osdba@osdba-work:~/src/ctest$
osdba@osdba-work:~/src/ctest$ ./pgtest
Connect database success!
ERROR:  relation "test" does not exist at character 13
STATEMENT:  insert into test values(1,'aaaaaa')
ERROR:  relation "test" does not exist
LINE 1: insert into test values(1,'aaaaaa')
                    ^

osdba@osdba-work:~/src/ctest$ psql
psql (9.2.1)
Type "help" for help.

osdba=# create table test(id int, name text);
CREATE TABLE
osdba=# \q
osdba@osdba-work:~/src/ctest$ ./pgtest
Connect database success!
Successfully execute SQL : insert into test values(1,'aaaaaa')
osdba@osdba-work:~/src/ctest$ psql
psql (9.2.1)
Type "help" for help.

osdba=# select * from test;
id |  name  
----+--------
  1 | aaaaaa
(1 row)

osdba=#

论坛徽章:
0
3 [报告]
发表于 2012-12-13 17:05 |只看该作者
我再问一个问题  假如我insert进去的数字要求用参数num = 1,str = “aaaaaaaaaaaaaaa”表示 ,拿你的例子 sprintf(szSQL, "insert into test values(1,'aaaaaa')");就是怎么插进去啊?
谢谢你了啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP