在postgresql admin里面写入SQL语句以及建立复合类型问题 我先进入pg admin界面,然后新建表,在新建表框中选择SQL,把只读去掉,写入SQL语句,但是这时确认键就变灰了,无法写入数据,求指点。还有怎么建立复合类型?应该在新建字段里面选择哪个类型是指复合类型?如果使用vc2008,应该如何实现复合类型的写入? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 当有些工具做不到你所想的, 你就直接写SQL语句来执行吧数据库的复合类型, 都不会映射到你的客户端, 一搬都解析为字符串 复合类型就是自定义类型。只读是指在SQL框里面有个只读选项,初始时SQL框里是空白的,我写上语句,想按确认键时,确认键是灰的 你好,在c里面是这么写的吗?void CreateComplexType(PGconn *conn){ // Execute with sql statement PGresult *res = PQexec(conn, "CREATE TYPE complex AS ( r double precision,i double precision)"); if (PQresultStatus(res) != PGRES_COMMAND_OK) { printf("Create complex type failed"); PQclear(res); CloseConn(conn); } printf("Create complex type - OK\n"); // Clear result PQclear(res);} SQL语句是没错的复合型字段写入请应字符串类型, 格式为row(xxx,xxx) 不好意思有点没太看明白。你的意思是说把 "CREATE TYPE complex AS ( r double precision,i double precision)"中的double precision改成char吗?如果可以的话,麻烦在我贴的代码里面帮忙改下,小妹不胜感激! 你的CREATE TYPE 没错我说的是你要INSERT INTO数据的时候, 复合型字段用字符串代替, 格式如row(1.0,2.0) 明白,谢谢啦。但是不知道为什么我创建complex类型不能成功,求指点。下面是我的完整代码:#include <iostream> #include "libpq-fe.h"using namespace std;PGconn *ConnectDB(){ PGconn *conn = NULL; // Make a connection to the database conn = PQconnectdb("user=postgres password=112799 dbname=postgres hostaddr=127.0.0.1 port=5432"); // Check to see that the backend connection was successfully made if (PQstatus(conn) != CONNECTION_OK) { printf("Connection to database failed"); CloseConn(conn); } printf("Connection to database - OK\n"); return conn;}void CreateType(PGconn *conn){ PGresult *res = PQexec(conn, "CREATE TYPE complex AS ( r double precision,i double precision)"); if (PQresultStatus(res) != PGRES_COMMAND_OK) { printf("Create type complex failed"); PQclear(res); CloseConn(conn); } printf("Create type complex - OK\n"); // Clear result PQclear(res);}int main(int argc, char* argv[]){ PGconn *conn = NULL; conn = ConnectDB(); CreateType(conn); return 0; system("pause");} 可能是运行期错误, 你用PQerrorMessage返回错误信息看一看 你好,最后还是没搞定。请问下如果在pg admin里面是需要在哪个新建选项下实现新建自定义类型呢?我试了下载已建好表里面新建字段,貌似不是在那建的。。 pgadmin 有SQL窗口, 直接在里面敲SQL命令 来执行 left join30万行数据的问题 取不到值,请大家帮忙修改这条mysql语句。 求mysql+php 中文全文搜索 ACMAIN_CHM 请进。以前的一个贴子。 请问重装系统后如何才能访问之前建立的表? 建表时default charset在mysql4不支持,急求救,即结贴 急问:为什么安装完Mysql,却不能自己建立数据库? 求助:这是什么错误。。。。 新手求救!!Mysql连接不上。 怎样对远程的数据库进行一次性读入呢(关键是一次性读入哟)? mysql表中字段该用哪种类型呢?--求大神 真心不会做,求大神解答,急!!!!!!!!!!!!!!!!
数据库的复合类型, 都不会映射到你的客户端, 一搬都解析为字符串
void CreateComplexType(PGconn *conn)
{
// Execute with sql statement
PGresult *res = PQexec(conn, "CREATE TYPE complex AS ( r double precision,i double precision)");
if (PQresultStatus(res) != PGRES_COMMAND_OK)
{
printf("Create complex type failed");
PQclear(res);
CloseConn(conn);
} printf("Create complex type - OK\n"); // Clear result
PQclear(res);
}
复合型字段写入请应字符串类型, 格式为row(xxx,xxx)
我说的是你要INSERT INTO数据的时候, 复合型字段用字符串代替, 格式如row(1.0,2.0)
#include "libpq-fe.h"
using namespace std;PGconn *ConnectDB()
{
PGconn *conn = NULL; // Make a connection to the database
conn = PQconnectdb("user=postgres password=112799 dbname=postgres hostaddr=127.0.0.1 port=5432"); // Check to see that the backend connection was successfully made
if (PQstatus(conn) != CONNECTION_OK)
{
printf("Connection to database failed");
CloseConn(conn);
} printf("Connection to database - OK\n"); return conn;
}
void CreateType(PGconn *conn)
{
PGresult *res = PQexec(conn, "CREATE TYPE complex AS ( r double precision,i double precision)");
if (PQresultStatus(res) != PGRES_COMMAND_OK)
{
printf("Create type complex failed");
PQclear(res);
CloseConn(conn);
} printf("Create type complex - OK\n");
// Clear result
PQclear(res);}
int main(int argc, char* argv[])
{
PGconn *conn = NULL;
conn = ConnectDB();
CreateType(conn);
return 0;
system("pause");
}
你用PQerrorMessage返回错误信息看一看