在PostgreSQL中,如果表名或者字段名中存在大写字符,这个sql执行就会错误。
解决方法:
给带有大写字母的表名或者字段名加上引号。
eg:
"Employee"
"Name"
这种情况在客户端编程也一样,如果是C#客户端,也必须加上引号。
我们创建一个如下的表:
CREATE
TABLE
"Employee"
(
"Name" character varying ( 20 ),
"Age" integer ,
"Id" serial NOT NULL
)
WITH (OIDS = FALSE);
ALTER TABLE "Employee" OWNER TO postgres;
(
"Name" character varying ( 20 ),
"Age" integer ,
"Id" serial NOT NULL
)
WITH (OIDS = FALSE);
ALTER TABLE "Employee" OWNER TO postgres;
C#客户端代码如下:
protected
void
btnInsert_Click(
object
sender, EventArgs e)
{
string sql = " insert into \"Employee\"(\"Name\", \"Age\") "
+ " values(' " + txtName.Text + " ', " + txtAge.Text + " ) " ;
// string sql = "insert into Employee(Name, Age) "
// + "values('" + txtName.Text + "', " + txtAge.Text + ")";
PostSqlUtil db = new PostSqlUtil();
if (db.ExecuteSQL(sql) > 0 )
Response.Write( " 一条记录插入成功! " );
else
Response.Write( " 记录插入失败! " );
}
{
string sql = " insert into \"Employee\"(\"Name\", \"Age\") "
+ " values(' " + txtName.Text + " ', " + txtAge.Text + " ) " ;
// string sql = "insert into Employee(Name, Age) "
// + "values('" + txtName.Text + "', " + txtAge.Text + ")";
PostSqlUtil db = new PostSqlUtil();
if (db.ExecuteSQL(sql) > 0 )
Response.Write( " 一条记录插入成功! " );
else
Response.Write( " 记录插入失败! " );
}