Re: problem with Chinese - Mailing list pgsql-jdbc

From Barry Lind
Subject Re: problem with Chinese
Date
Msg-id 3BCF2FFB.5070503@xythos.com
Whole thread Raw
In response to problem with Chinese  (root <malix@263.net>)
List pgsql-jdbc
The problem here could be a number of different things.  Let me walk
through the ones I can think of.

1) You really should be using a PreparedStatement for this query you are
doing, so that the driver can escape any special characters you may have
in your bind value.  Right now if your t1 value contains single quotes
you will get an error.  So:

> String str_sql="SELECT * FROM customer where cname='"+t1+"'";
> �� ������������System.out.println(str_sql);
> �� ������������ResultSet rs = st.executeQuery(str_sql);

should be:

PreparedStatement st = dbconn.prepareStatement("SELECT * FROM customer
where cname= ? ");
st.setString(1,t1);
ResultSet rs = st.executeQuery();


2)  What characterSet/encoding is your database using?  Issue "select
getdatabaseencoding();" from psql while connected to the redauto
database.  It shouldn't be SQL_ASCII, but should be something like EUC_CN.

3)  Have the server print out the SQL statements that are being sent by
the client (set debug_print_query = true in the postgresql.conf file).
By looking at the sql that is being sent to the server you might be able
to track down where the missing/extra quote is coming from.

thanks,
--Barry




root wrote:

> Hi,
> I have downloaded binary JDBC Driver from both postgresql.org and
> jdbc.postgresql
> it's version is jdbc7.1-1.2/jdbc7.1-1.1. It always give a message like this
>
> Exception in thread "main" java.sql.SQLException: ERROR:��Unterminated
> quoted string
>
> �� ����at org.postgresql.Connection.ExecSQL(Connection.java:533)
> �� ����at org.postgresql.jdbc2.Statement.execute(Statement.java:294)
> �� ����at org.postgresql.jdbc2.Statement.executeQuery(Statement.java:59)
> �� ����at Test.main(Test.java:20)
>
> I have also tride to rebuild the source code with
> ./configure --prefix=/opt --enable-locale --enable-multibyte=EUC_CN
> --with-CXX -with-java -with-openssl=/usr
> 1)��for JDBC it can complete compilation, but use JDBC with problem
> 2)��for libpq--> input.c -->on_exit() :
>
> gcc -O2 -Wall -Wmissing-prototypes -Wmissing-declarations
> -I../../../src/interfaces/libpq -I../../../src/include -I/usr/include��-
> c -o input.o input.c
> input.c: In function `initializeInput':
> input.c:157: warning: passing arg 1 of `on_exit' from incompatible
> pointer type
> input.c:157: too few arguments to function `on_exit'
>
> 3) my table customer is very simple : cno char(10),cname varchar(50)
> my source code :
>
> import java.sql.*;
> import java.io.*;
>
> class Test{
> �� ����public static void main(String args[]) throws Exception {
> �� ������������System.out.println("input :");
> �� ������������BufferedReader in=new BufferedReader(
> �� ������������������������������������new InputStreamReader(
> �� ��������������������������������������������System.in
> �� ����������������������������������������)
> �� ����������������������������������);
> �� ������������String t1=in.readLine(); //here i can enter some Chinese
> string
> �� ������������System.out.println("your input are :"+t1);��
> �� ������������Class.forName("org.postgresql.Driver");
> �� ������������Connection dbconn=DriverManager.getConnection(
> �� ��������������������"jdbc:postgresql:redauto","postgres","");
> �� ������������Statement st = dbconn.createStatement();
> �� ������������String str_sql="SELECT * FROM customer where cname='"+t1+"'";
> �� ������������System.out.println(str_sql);
> �� ������������ResultSet rs = st.executeQuery(str_sql);
> �� ������������while(rs.next()) {
> �� ����������������System.out.println(rs.getString(1)+"\t"+rs.getString
> (2)+"\n");
> �� ������������}
> �� ������������rs.close();
> �� ������������st.close();
> �� ������������dbconn.close();
> �� ����}
> }
>
>
>
> I am shade to have disturbed you.
> you are kind for me if you can give any sugestion.
> Thanks very much.
>
> malix
> shanghai china
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
>
> http://www.postgresql.org/users-lounge/docs/faq.html
>
>



pgsql-jdbc by date:

Previous
From:
Date:
Subject: Re: JDBC PostgreSQhelL
Next
From: Barry Lind
Date:
Subject: Re: JDBC PostgreSQhelL