小弟最近写一个C 连接 PostgreSQL 的程序.代码如下:
#include <sys/types.h>
#include <stdio.h>
#include <string.h>#include <stdlib.h>
#include <unistd.h>
#include <time.h>#include <libpq-fe.h>PGconn     *conn;
PGresult   *result;
//PQfinish 关闭与后端的联接.同时释放被 PGconn 对象使用的存储器.
//PQreset 重置与后端的通讯端口.
char *name = "TextDB";
char *config = "cdr_pgsql.conf";
char *pghost = NULL, *pgdbname = NULL, *pgdbusername = NULL, *pgpassword = NULL, *pgdbport = NULL, *table = NULL;
int connected = 0;static void exit_nicely(PGconn *conn)
{
PQfinish(conn);
exit(1);
}
int main()
{
  char *ConnError ;
  const char *conninfo;
  //if(argc>1)
  //conninfo = argv[1];
  //else
  //conninfo = "SplusDatabase";
  if (connected<0)
  {
     conn = PQsetdbLogin(192.168.178.2,5432, NULL, NULL, conninfo,"postgres","server"); //连接数据库服务器
     if (PQstatus(conn) != CONNECTION_BAD)
         connected=1;
     else
     {
        ConnError = PQerrorMessage(conn);
        printf(stderr, "Connection to database failed: %s",
              ConnError);
        exit_nicely(conn);
     }
  }
  if (PQstatus(conn) == CONNECTION_OK)
  {
      char *pgsql ;
      result = PQexec(conn,"BEGIN");
      if(PQresultStatus(result) != PGRES_COMMAND_OK)
      {
          ConnError = PQresultErrorMessage(result);
         printf(stderr,"BEGIN command failed: %s",ConnError);
         PQclear(result);
         exit_nicely(conn);
      }
      else
      {
          PQclear(result);
          pgsql  = "Insert Into UserInfo(UserName,UserAge)Values(GuoPeng,21)";
          result = PQexec(conn,pgsql);
          if(PQresultStatus(result) != PGRES_COMMAND_OK)
          {
              ConnError = PQresultErrorMessage(result);
              printf(stderr,"%s",ConnError);
              PQclear(result);
              exit_nicely(conn);
          }
          PQclear(result);
          pgsql  = "Select * From UserInfo";
          result = PQexec(conn,pgsql);
         int i = 0,j = 0 ;
  for( i=0;i<sizeof(PQntuples((result)));i++)
          {
             for( j=0;j<sizeof(PQnfields(result));j++)
             {
               printf("%s",PQgetvalue(result,i,j));
             }
          }
          PQclear(result);
          pgsql = "Updata UserInfo Set UserName=GuoJunWei,UserAge=21";
          result = PQexec(conn,pgsql);
          PQclear(result);
       }
  }
  PQfinish(conn);
  connected = 0;
  return 0 ;
}
编译时候出现这个错误....
[root@localhost Splus]# gcc -o cdr_pgsql1  pgsql.c
pgsql.c:20:24: too many decimal points in number
pgsql.c: In function `main':
pgsql.c:20: warning: passing arg 2 of `PQsetdbLogin' makes pointer from integer without a cast
pgsql.c:27: warning: passing arg 1 of `printf' from incompatible pointer type
请问是怎么回事呢.......
谁能个忙..谢谢..