Hello everyone!
I have a problem retrieving data (arabic data)from Oracle database. Bellow is the code for a testing page that should search for a giving name from oracle database and then disply it on the screan.
PS: even though the input is a correct data, the search doesn't give me anything back!
BTW, I'm using apache tomcat.
ANY HELP WILL BE GREATLY APPRECIATED!
<%@ page import="java.util.*,java.sql.*,java.lang.* " %>
<%@ page contentType="text/html; charset=Cp1256" %>
<html>
<head>
<title>Map Center</title>"
<meta http-equiv="Content-Type" content="text/html; charset="UTF-8">
</head>
<body class="bgcolour" text="#000000" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<table>
<form method='POST' action='arabic_new.jsp'>
<tr>
<td><input type="text" value="" name="arabicvalue"><input type="submit" value="match input"></td>
</tr>
<%
String driver="oracle.jdbc.driver.OracleDriver";
String url="jdbc:oracle:thin:@something001:1521:something";
String username="dubaidata";
String password="dubaidata";
Class.forName(driver).newInstance();
Connection conn=DriverManager.getConnection(url, username, password);
PreparedStatement search = null;
ResultSet rset = null;
ResultSetMetaData metaData = null;
//TEST LANGUAGE SUPPORT
try
{
String alter_language= "ALTER SESSION SET NLS_LANGUAGE = ARABIC";
String alter_territory = "ALTER SESSION SET NLS_TERRITORY ='UNITED ARAB EMIRATES'";
//alter NLS_Language in this session
PreparedStatement ps_alter_language =conn.prepareStatement(alter_language);
ps_alter_language.execute();
ps_alter_language.close();
System.out.println("3");
System.out.println("altered session to read lang - ARABIC");
//alter NLS_TERRITORY in this session
PreparedStatement ps_alter_territory =conn.prepareStatement(alter_territory);
ps_alter_territory.execute();
ps_alter_territory.close();
System.out.println("altered session to read territory - UNITED ARAB EMIRATES");
}
catch (SQLException e)
{
System.out.println("bombed while setting language and territory");
e.printStackTrace();
}
try
{
if(request.getParameter("arabicvalue")==null || request.getParameter("arabicvalue").equals(""))
{
search = conn.prepareStatement("select cname_a from admin where cname_a like '%'");
}
else
{
//out.println("character encoding:"+request.getCharacterEncoding());
out.println("actual input:"+request.getParameter("arabicvalue"));
//THE ABOVE LINE OUTPUT QUESTION MARKS INSTEAD OF THE ACTUAL INPUT!!?
String value=new String(request.getParameter("arabicvalue").getBytes("ISO-8859-1"),"Cp1256");
out.println("<tr>");
out.println("<td>");
out.println("arabic value is:"+value);
out.println("</td>");
out.println("<td>");
out.println("</BR>select cname_a from admin where cname_a like ?");
out.println("</td>");
out.println("</tr>");
search = conn.prepareStatement("select cname_a from admin where cname_a like ?");//oracle.jsp.util.PublicUtil.setReqCharacterEncoding(value, "ARABIC_UNITED ARAB EMIRATES");
search.setString(1,"%"+value+"%");
}
search.setMaxRows(50);
rset = search.executeQuery();
metaData = rset.getMetaData();
out.println(metaData.getColumnCount());
while (rset.next())
{
//out.println("got a record");
out.println("<tr>");
for (int nCols = 1; nCols <= metaData.getColumnCount(); nCols++)
{
out.println("<td>");
String s=new String(rset.getBytes(nCols),"Cp1256");
out.println(s);
out.println("</td>");
}
out.println("</tr>");
}
search.close();
}
catch (SQLException e)
{
System.out.println("bombed while querying");
e.printStackTrace();
search.close();
}
%>
</form>
</table>
</body>
</html>
[ September 10, 2002: Message edited by: fed ]
[ September 10, 2002: Message edited by: fed ]