Utf8 strings in jdbc

I have a database with database code set UTF-8 containing a DB2 table TMP with a column C of character(10).
In this column, I would like to put the following string "\u2260", which is the 'not equal sign'.
What did I first?
String key = "A";
String nes = "\u2260";
PreparedStatement pst1 = aDbconn.prepareStatement("INSERT INTO TMP (KE, C) VALUES(?, ?)");
pst1.setString(1, key);
pst1.setString(2, nes);
if (pst1.executeUpdate() == 0) {
System.out.println("something went wrong");
pst.close();
aDbconn.commit()
Afterwards, I tried to retrieve this value with getString, but what was retrieved is not equal to what was inserted.
PreparedStatement pst2 = aDbconn.prepareStatement("SELECT KE, C FROM TMP WHERE KE = ?");
pst2.setString(1, key);
ResultSet rec = pst2.executeQuery();
if (rec.next()) {
String resultvalue = rec.getString("C");
if (resultvalue.equals(nes)) {
System.out.println("it is not equal");
Because, this did not work well( I got the message), I made the following change.
String key = "A";
String nes = "\u2260";
PreparedStatement pst1 = aDbconn.prepareStatement("INSERT INTO TMP (KE, C) VALUES(?, ?)");
pst1.setString(1, key);
byte[] bytes = nes.getBytes("UTF-8");
pst1.setBinaryStream(2, new ByteArrayInputStream(bytes), bytes.length);
if (pst1.executeUpdate() == 0) {
System.out.println("something went wrong");
pst.close();
aDbconn.commit()
PreparedStatement pst2 = aDbconn.prepareStatement("SELECT KE, C FROM TMP WHERE KE = ?");
pst2.setString(1, key);
ResultSet rec = pst2.executeQuery();
if (rec.next()) {
String resultvalue = new String(rec.getBytes("C"),"UTF-8").trim();
if (resultvalue.equals(nes)) {
System.out.println("it is not equal");
And this works fine.
Is this the way to work with utf8 ?
The string "\u2260" is after getBytes("UTF-8") three bytes long. Those three bytes were stored in a column of CHARACTER(10). When I stored it in a column of CHARACTER(5), I got an exception saying 'String too long'. Is this normal ?
Has someone experience with storing utf8-strings upon a database with jdbc ?

if (resultvalue.equals(nes)) {
System.out.println("it is not equal");
}Do I get you right: you print "it is not equal" if the value is equal?

Similar Messages

  • Can't store UTF8 strings from ASP in NVARCHAR2 column?!

    Hi,
    I have a problem to get UTF8 strings into my XE database, i.e. the russian input characters 'письма' return as '¿¿¿¿¿¿'.
    The NLS config for database is:
    NLS_CHARACTERSET: AMERICAN_AMERICA.WE8MSWIN1252
    NLS_NCHAR_CHARACTERSET: AL16UTF16
    Because I can't set up the whole database as UNICODE, I took the way with NVARCHAR columns, that use NLS_NCHAR_CHARACTERSET: AL16UTF16.
    In my tests I'm running a sample ASP page (in JScript, UTF8 as codepage, ADO with OraOLEDB.Oracle provider) the posts a form and updates an ascii ('a')and a nvarchar column ('u') these ways:
    1. using literals with/ without N' prefix:
    sql="update utf8test set a="+t_a+", u=N"+t_u+" where id=1";
    2.using bind variables:
    sql="update utf8test set a=?, u=? where id=1";
    using: adVarChar, adVarWChar
    And at last, even in my Oracle Enterprise Manager (9i, "edit table contents", copy & paste UTF8 text) and XE SQL aren't able to store any UTF8 texts.
    Can anybody help with this problem, please?
    Thank you in advance.
    Mathias
    PS:
    Changing the database connection to Access (.mdb), MS SQL-Server and also PostgreSQL (created as UNICODE db) works fine without changing my code.

    it worked ! thank you very much!
    But it's really annoying to read a 454 pages pdf of "Globalization Support Guide Oracle 9.2" and this simple parameter is nowhere mentioned :-(

  • "Illegal UTF8 string in constant pool"

    I'm running a jsp application on JRun 3.1 with an Appache web server. Every once in while I get this error when trying to access a jsp. "Illegal UTF8 string in constant pool". If I hit refresh or reload the page loads fine. It appears to be random and not very often. Does anybody know what is causing this or what I might do to eliminate this problem? Thanks

    Thanks for your reply. However the answer to that question does not appear to apply here. I'm not using the URLConnection.getInputStream().read() method. on my jsp page. The entire error is below:
    javax.servlet.ServletException: jrun__sub_topic2ejspe (Illegal UTF8 string in constant pool)
    java.lang.ClassFormatError: jrun__sub_topic2ejspe (Illegal UTF8 string in constant pool)
    at java.lang.ClassLoader.defineClass0(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:509)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:438)
    at allaire.jrun.servlet.JSPClassLoader.loadClass(JSPClassLoader.java:82)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:262)
    at allaire.jrun.servlet.JRunServletLoader.loadServletInstance(JRunServletLoader.java:221)
    at allaire.jrun.servlet.JRunServletLoader.loadServletInstance(JRunServletLoader.java:190)
    at allaire.jrun.servlet.JRunServletLoader.loadServlet(JRunServletLoader.java:177)
    at allaire.jrun.servlet.JRunServletLoader.reloadServlet(JRunServletLoader.java:161)
    at allaire.jrun.servlet.JRunSE.reloadServlet(JRunSE.java:1377)
    at allaire.jrun.jsp.JSPServlet.loadPage(JSPServlet.java:205)
    at allaire.jrun.jsp.JSPServlet.service(JSPServlet.java:169)
    at allaire.jrun.servlet.JRunSE.service(JRunSE.java:1013)
    at allaire.jrun.servlet.JRunSE.runServlet(JRunSE.java:925)
    at allaire.jrun.servlet.JRunRequestDispatcher.forward(JRunRequestDispatcher.java:88)
    at allaire.jrun.servlet.JRunSE.service(JRunSE.java:1131)
    at allaire.jrun.servlet.JvmContext.dispatch(JvmContext.java:330)
    at allaire.jrun.jrpp.ProxyEndpoint.run(ProxyEndpoint.java:382)
    at allaire.jrun.ThreadPool.run(ThreadPool.java:272)
    at allaire.jrun.WorkerThread.run(WorkerThread.java:75)
    As mentioned before the error occurs infrequently,and randomly. If you refresh or reload the page everything works fine. Does anybody know what might cause this error and/or what I can do to prevent it. Thanks

  • Null strings in jdbc (basic question)

    Hello.
    I have a java code that is more or less like this (all fields involved are varchar2):
    String sentence = 'update my_table ';
    sentence = sentence + "set field1 = "+ "'" + EveryField.getField1() + "',"; // field1 can be null
    sentence + "field2 = "+ "'" + EveryField.getField2() + "',"; // field2 can be null
    sentence = sentence + "fieldN = "+ "'" + EveryField.getFieldN() + "' "; // fieldN can be null
    I want to know a direct way of avoiding coding an if every time I concat a string (that can be null to another) string in order to avoid the implicit coversion of null value in the literal 'null'
    Thanks in advance.

    My rule of thumb is to always use PerparedStatement, not Statement:
    http://java.sun.com/javase/6/docs/api/java/sql/PreparedStatement.html
    example:
    public int call(Connection con, String field1, long id) throws SQLException {
        String sql = "UPDATE tableX SET field1=? WHERE id=?";
        PreparedStatement ps = con.prepareStatement(sql);
        try {
            if (field1 == null)
                ps.setNull(1, Types.NVARCHAR);
            else
                ps.setString(1, field1);
            ps.setLong(2, id);
            return ps.executeUpdate();
        } finally {
            ps.close();
    }

  • Any convenient to know language used with a UTF8 string?

    I've got some UTF-8 txt files.
    Each file contains different language, english, chinese...etc
    And they are all in UTF-8 format.
    Now, how can I know the exact language used in the file?
    As all are in UTF-8 format, should I calculate the text byte to classify them?

    You may not know the language, but at least you can know the unicode block of a character.
    For example
    char c = '\u4ec1';//CJK (chinese-japanese-korean)
    java.lang.Character.UnicodeBlock block = java.lang.Character.UnicodeBlock.of(c);
    System.out.println(block.toString());

  • Problem in JDBC-SQL Server connection string

    Anyone could help me to write proper connection string using JDBC with SQL Server 2000. The descp:
    Server name: CD
    databaseName: songs
    Using Window NT authentication.
    I dont know whether to include username and password.
    When I executed the statement below:
    DriverManager.getConnection("jdbc:microsoft:sqlserver://CD:1433;databaseName=songs");
    Recieved error: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket
    Plz help!! Thank you very much.

    Look at the URl below:
    How to connect to Microsoft SQL server with Type 4 JDBC driver
    http://www.java-tips.org/content/view/615/29/

  • Jdbc, connection string to a rack

    hello,
    can i connect on jdbc receiver side to a rack ( logical instance instead of a physical instance) or to 2 ipaddresss instead of one in case one node gets down?
    i currently have a connection string as : jdbc:oracle:thin:@ipaddress:port:Databasename
    Please suggest.
    Thanks

    Closing thread.

  • Jdbc connection string

    Hi All,
    I am trying to connect to sysbase tables with
    Connection String: <b>jdbc:sybase:TDS5:DB110:3400:falud002</b>
    JDBC Driver: <b>com.sybase.jdbc3.jdbc.SybDriver</b>
    But it gives me error in RWB as:
    <b>Error during database connection to the database URL 'jdbc:sybase:TDS:DB110:3400:falud002' using the JDBC driver 'com.sybase.jdbc3.jdbc.SybDriver': 'com.sap.aii.adapter.jdbc.sql.DriverManagerException: Cannot establish connection to URL 'jdbc:sybase:TDS:DB110:3400:falud002': SQLException: JZ0D5: Error loading protocol com.sybase.jdbc3.tds.TDS.'</b>
    Please advice....
    Xier

    Hey
    i know you might have done it but just want to make sure whether u have installed the proper drivers for Sybase or not?
    Thanx
    Aamir

  • JDBC Connection String for MS Sql Server 2000 with Instance Name

    Hi All,
    I am having problems connecting to a MS Sql Server 2000 database using MSSqlServer4
    driver when the database server has an Instance Name. If the database server has
    no instance name then I am able to connect using the connection string
    connection=jdbc:weblogic:mssqlserver4:hansa:1433
    But when I have the MS Sql Server DB with an instance name such as "TestInstance",
    then I am unable to connect with any of the connection strings given below
    connection=jdbc:weblogic:mssqlserver4:hansa\TestInstance:1433 or
    connection=jdbc:weblogic:mssqlserver4:hansa\\TestInstance:1433 or
    connection=jdbc:weblogic:mssqlserver4:hansa:TestInstance:1433 or
    connection=jdbc:weblogic:mssqlserver4:hansa:1433:TestInstance
    Can anybody help me in resolving this issue. Appreciate your help.
    Thanks in advance.
    Vikram

    Vikram wrote:
    Hi All,
    I am having problems connecting to a MS Sql Server 2000 database using MSSqlServer4
    driver when the database server has an Instance Name. If the database server has
    no instance name then I am able to connect using the connection string
    connection=jdbc:weblogic:mssqlserver4:hansa:1433
    But when I have the MS Sql Server DB with an instance name such as "TestInstance",
    then I am unable to connect with any of the connection strings given below
    connection=jdbc:weblogic:mssqlserver4:hansa\TestInstance:1433 or
    connection=jdbc:weblogic:mssqlserver4:hansa\\TestInstance:1433 or
    connection=jdbc:weblogic:mssqlserver4:hansa:TestInstance:1433 or
    connection=jdbc:weblogic:mssqlserver4:hansa:1433:TestInstance
    Can anybody help me in resolving this issue. Appreciate your help.Hi. No type-4 jdbc driver is going to be able to use a name for a DBMS instance.
    Let's assume you have two DBMS instances running on the machine hansa. One
    of them may be listening for tcp connections on port 1433, but the other must not.
    The other most be listening on some other port number you have chosen.
    Therefore, to choose which DBMS instance you want to connect to, use the
    working URL you have, and switch the port number as desired.
    Joe Weinstein
    >
    >
    Thanks in advance.
    Vikram

  • Oracle 8.1.7.4 + JDBC Driver 10.2.0.3.0=invalid or unknown NLS parameter...

    I'm having an issue trying to update the jdbc driver from 10.1.0.2.0 to 10.2.0.3.0 to access an Oracle 8.1.7.4 instance. Using this code I'm getting the following exception, any ideas how to fix it?
    Thanks,
    Johann
    Connection c = null;
    try {
         Driver dr = new oracle.jdbc.OracleDriver();
         DriverManager.registerDriver(dr);
         Properties props = new Properties();
         props.put("user", "congiromsr");
         props.put("password", "the password");
         String url = "jdbc:oracle:thin:@cholguaco:1533:lobo";
         c = dr.connect(url, props);
         System.out.println("The driver is "
                   + c.getMetaData().getDriverVersion());
         System.out.println("The DBMS is "
                   + c.getMetaData().getDatabaseProductVersion());
    } catch (Exception e) {
         e.printStackTrace();
    } finally {
         try {
              c.close();
         } catch (Exception ignore) {
    java.sql.SQLException: ORA-00604: error occurred at recursive SQL level 1
    ORA-12705: invalid or unknown NLS parameter value specified
         at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
         at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
         at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:283)
         at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:278)
         at oracle.jdbc.driver.T4CTTIoauthenticate.receiveOauth(T4CTTIoauthenticate.java:791)
         at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:362)
         at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:439)
         at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
         at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
         at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
         at TestClass.main(TestClass.java:14)

    JDBC drivers set NLS parameters based on your locale settings. There are three based parameters: language, territory and character set. Maybe in your case JDBC driver 10.2.0.3.0 sets one of them with value that is not supported in Oracle Database 8.1.7.4. Character set is the first candidate for this. JDBC drivers use only Unicode character sets - there are a few new of them in Oracle Database 10g. 8 and 9 versions of JDBC drivers use UTF8 which is Unicode version 3.0 but in 10g is added Al32UTF8 which is Unicode version 4.0.

  • Issue encountered when Login as sysdba role using Thin Oracle JDBC Driver

    Hello all,
    we are now considering to use Thin oracle JDBC driver to create database in our project, but we met one issue when we tried to connect to oracle as sysdba role using Thin driver, and it throws java.sql.SQLException: Io Exception: SO Exception was generated, I have found some tips on oracle jdbc website and it says :
    How do I connect as SYSDBA or SYSOPER?
    The only way to do this is to use the Properties object when connecting, rather than specifying the username and password as strings. Put the username into the "user" property, and the password into the "password" property. Then, put the mode into the "internal_logon" property. Something like the following:
    Properties props = new Properties();
    props.put("user", "scott");
    props.put("password", "tiger");
    props.put("internal_logon", "sysoper");
    Connection conn = DriverManager.getConnection (url, props);
    When connecting as SYSDBA or SYSOPER using the Thin driver, the RDBMS must be configured to use a password file. See "Creating and Maintaining a Password File" in the "Oracle Database Administrator's Guide".
    So, i did execute orapwd command to create a password file and also set remote_login_passwordfile=execlusive in my initxxx.ora initial parameter file, however, when i tried to connect, it failed.
    private static void createEmsdbDatabase(){
    String url = "jdbc:oracle:thin:@localhost:1521:";
    StringBuffer sqlStatement = new StringBuffer();
    sqlStatement.append("create database xxx");
    sqlStatement.append("maxdatafiles 254 ");
    sqlStatement.append("maxinstances 8 ");
    sqlStatement.append("maxlogfiles 32 ");
    sqlStatement.append("character set UTF8 ");
    sqlStatement.append("national character set UTF8 ");
    sqlStatement.append("DATAFILE 'c:\\oracle\\xxx\\system01.dbf' SIZE 18M REUSE ");
    sqlStatement.append("logfile 'c:\\oracle\\xxx\\redo01.log' SIZE 2M REUSE, ");
    sqlStatement.append("'c:\\oracle\\xxx\\redo02.log' SIZE 2M REUSE, ");
    sqlStatement.append("'c:\\oracle\\xxx\\redo03.log' SIZE 2M REUSE ");
    try {
    DriverManager.registerDriver(new OracleDriver());
    Properties props = new Properties();
    props.put("user", "sys");
    props.put("password", "password");
    props.put("database","xxx");
    props.put("internal_logon", "sysdba");
    Connection conn = DriverManager.getConnection(url, props);
    Statement statement = conn.createStatement();
    statement.executeUpdate(sqlStatement.toString());
    statement.close();
    conn.close();
    } catch (SQLException e) {
    e.printStackTrace();
    But what made me puzzled a lot is if i use OCI driver, it did work great, why??? guys, anybody knows, please give me some tips, thanks in advance.
    regards,
    Kaixuan @ Shanghai

    clarify my question in detail:
    Step 1 : create password file using orapwd command
    Step 2 : create database instance using oradim command
    Step 3 : login using sys as sysdba to startup database, e.g startup nomount pfile='...\initxxx.ora'
    Step 4 : create database.
    java code showing below:
    private static void createEmsdbDatabase(){
    String url = "jdbc:oracle:thin:@localhost:1521:";
    StringBuffer sqlStatement = new StringBuffer();
    sqlStatement.append("create database xxx ");
    sqlStatement.append("maxdatafiles 254 ");
    sqlStatement.append("maxinstances 8 ");
    sqlStatement.append("maxlogfiles 32 ");
    sqlStatement.append("character set UTF8 ");
    sqlStatement.append("national character set UTF8 ");
    sqlStatement.append("DATAFILE 'c:\\oracle\\xxx\\system01.dbf' SIZE 18M REUSE ");
    sqlStatement.append("logfile 'c:\\oracle\\xxx\\redo01.log' SIZE 2M REUSE, ");
    sqlStatement.append("'c:\\oracle\\xxx\\redo02.log' SIZE 2M REUSE, ");
    sqlStatement.append("'c:\\oracle\\xxx\\redo03.log' SIZE 2M REUSE ");
    try {
    DriverManager.registerDriver(new OracleDriver());
    Properties props = new Properties();
    props.put("user", "sys");
    props.put("password", "password");
    props.put("database","xxx");
    props.put("internal_logon", "sysdba");
    Connection conn = DriverManager.getConnection(url, props);
    Statement statement = conn.createStatement();
    statement.executeUpdate(sqlStatement.toString());
    statement.close();
    conn.close();
    } catch (SQLException e) {
    e.printStackTrace();
    issue was met here, when i tried to login as sysdba using sys, and in my java code, i use Thin driver, it then thrus exception, but when OCI driver is used, it works great, i don't know why.
    that is, when i use "jdbc:oracle:oci8:@" as database URL and then properties.put("database","xxx"), it works great. but, when i use "jdbc:oracle:thin:@localhost:1521:" as database URL and then properties.put("database","xxx"), it failed. hopefully, i have clarified my question clearly. thanks.

  • Creating a CLOB in jdbc

    I have a PL/SQL stored procedure which accepts a CLOB data type as one of the arguments. This procedure inserts a record into a table which has a column of datatype CLOB.
    Using jdbc, my java program creates a CallableStatement to the stored proc. Now I wish to create the CLOB based on a String value and pass it to the stored proc.
    This is a snippet of my code.
    import java.io.*;
    import java.sql.*;
    import oracle.jdbc.driver.*;
    import oracle.sql.*;
    public class TestClob2 {
    public static Connection getConnection() throws FPError {
    Connection connection = null;
    String hostname= "ahost";
    String host = "jdbc:oracle:thin:@" + hostname+ ":1521:db";
    String user = "user";
    try {
    DriverManager.registerDriver( new oracle.jdbc.driver.OracleDriver());
    connection = DriverManager.getConnection(host, user, user);
    } catch ( Exception e ){
    System.out.println("could not get connection" + e.toString());
    } catch ( Throwable t ){
    System.out.println("could not get connection" + t.toString());
    } finally {
    return connection;
    public static void main( String[] args){
    Connection con = null;
    try {
    con = getConnection();
    OracleCallableStatement stmt = (OracleCallableStatement) con.prepareCall("{call plsqlStoredProc(? )}");
    String message="Test for Clob";
    try
    oracle.sql.CLOB cl = new oracle.sql.CLOB( (OracleConnection) con);
    //byte[] msg = message.getBytes("UTF8");
    //CLOB cl = new CLOB( (OracleConnection) con, msg);
    if ( cl == null ) System.out.println("clob is null");
    long index = cl.getLength();
    System.out.println("length is " + l );
    int i = cl.putString(index+1, message);
    stmt.setCLOB(1, cl);
    stmt.executeUpdate();
    catch (SQLException excep)
    System.out.println(excep.getMessage());
    excep.printStackTrace();
    //new LogException(excep.getMessage());
    } catch (Exception e ) {
    System.out.println("caught exception " + e.toString());
    e.printStackTrace();
    } finally {
    try { if (con != null ) con.close(); } catch ( Exception e){ }
    I get the following error
    caught exception java.lang.NullPointerException:
    java.lang.NullPointerException:
    at oracle.sql.Datum.getBytes(Datum.java:147)
    at oracle.jdbc.driver.OraclePreparedStatement.setCLOB(OraclePreparedStat
    ement.java)
    at oracle.sql.CLOB.plsql_write(Compiled Code)
    at oracle.jdbc.ttc7.TTC7Protocol.lobWrite(TTC7Protocol.java)
    at oracle.sql.CLOB.putChars(CLOB.java)
    at oracle.sql.CLOB.putString(CLOB.java)
    at TestClob3.main(TestClob3.java:38)
    Can anybody tell me how I can create a CLOB in jdbc to pass it over to a PL/SQL stored proc.
    When I test the stored procedure using a PL/SQL proc ( creating a temporary clob and passing it to the stored proc ) it works fine.
    Can somebody point out the mistake in my code. Appreciate it.
    Thanks.
    null

    Hello,
    First of i must admit that i am naive to installation softwares. But i can tell u that u can create tables using java and jdbc. I have done it myself. As far as creating database in concerned i haven't tried it out yet. But my gut feeling is that u can create it. I u are interested in having a look at the sample code then here it is.
    import java.sql.*;
    public class demoddl
    public static void main(String[] args) throws SQLException
    try
    Class.forName("oracle.jdbc.driver.OracleDriver");
    Connection con = DriverManager.getConnection("jdbc:oracle:thin:@10.0.0.8:1521:oraserv","scott","lion");
    Statement stmt = con.createStatement();
    boolean b = stmt.execute("create table demoddl(a number)");
    System.out.println("Boolean
    catch(Exception e)
    System.out.println("Exception="+e.toString());
    }

  • SQL Exception: Fail to convert between UTF8 and UCS2: failUTF8Conv

    Hi,
    I am trying to use the DBMS_OBFUSCATION_TOOLKIT to encrypt/decrypt some strings through JDBC, but I am getting the following exception:
    SQL Exception: Fail to convert between UTF8 and UCS2: failUTF8Conv
    The input and output parameters for the encryption/decryption functions are VarChar2.
    Our database is using UTF8.
    I will be glad if someone can help me on this.
    Thanks,
    Cenk

    Susi,
    This is just a wild guess, but your java client is on a different computer to your Oracle 9.2 server, and the locale (or encodings) on the two computers is different. Am I correct? If so, then I guess you need to change the locales (or encodings) so that they match.
    Have you tried printing out the "System" properties for the two JVMs (Oracle's and your client's)? Something simple like this:
    System.getProperties().list()Good Luck,
    Avi.

  • JDBC connection w/Japanese server

    I have an English client doing the following JDBC connection to a Japanese server:
    m_connection = DriverManager.getConnection(
    m_connectionStr,
    m_user, m_password );
    This always results in a SQL exception with the following three messages:
    [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]???? 'MSSQL' ???????????????????????????????
    SQL State: HY000
    SQL Code: 4060
    [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]???? 'sa' ??????????????
    SQL State: 28000
    SQL Code: 18456
    [Microsoft][SQLServer 2000 Driver for JDBC]An error occured while attempting to log onto the database.
    SQL State: 08001
    SQL Code: 0
    What do I need to do to get a connection and to send queries that are stored in English?
    Thanks,
    pds2

    The connection string is:
    jdbc:microsoft:sqlserver://10.4.10.34:1433;databaseName=MSSQL;
    I tried the following with the same bad results as before:
    java.util.Properties prop = new java.util.Properties();
    prop.setProperty( "user", m_user );
    prop.setProperty( "password", m_password );
    prop.setProperty( "characterEncoding", "utf8" );
    prop.setProperty( "useUnicode", "true" );
    m_connection = DriverManager.getConnection(
    m_connectionStr, prop );
    Will some variation of this work?

  • Using JDBC to write a DAT file with delimiters to a database

    Hi Everybody
    I am new to JDBC and i am trying out some small applications: I downloaded this small program and tried to compile it and and I got the following errors: ( I have MySql installed). I have to set the classpath for the driver. But I am not sure why I am gettting the NullPointerException though)
    I will be very gratefull to your help. Thanks a lot..
    Loading JDBC Driver -> oracle.jdbc.driver.OracleDriver
    java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver
         at java.net.URLClassLoader$1.run(Unknown Source)
         at java.security.AccessController.doPrivileged(Native Method)
         at java.net.URLClassLoader.findClass(Unknown Source)
         at java.lang.ClassLoader.loadClass(Unknown Source)
         at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
         at java.lang.ClassLoader.loadClass(Unknown Source)
         at java.lang.ClassLoader.loadClassInternal(Unknown Source)
         at java.lang.Class.forName0(Native Method)
         at java.lang.Class.forName(Unknown Source)
         at us.ilango.WriteFileToTable.<init>(WriteFileToTable.java:69)
         at us.ilango.WriteFileToTable.main(WriteFileToTable.java:367)
    java.lang.NullPointerException
         at us.ilango.WriteFileToTable.createTable(WriteFileToTable.java:97)
         at us.ilango.WriteFileToTable.main(WriteFileToTable.java:368)
    Exception in thread "main"
    the Program is as follows:
    package us.ilango;
    import java.sql.DriverManager;
    import java.sql.Connection;
    import java.sql.Statement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.StringTokenizer;
    import java.io.FileReader;
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.util.Date;
    import java.text.SimpleDateFormat;
    import java.text.NumberFormat;
    import java.text.ParseException;
    * The following class provides an example of how to read a simple text file
    * of records and then insert them into a table in a database. A text file
    * named Employee.txt will contain employee records to be inserted into the
    * following table:
    *      SQL> desc emp
    *      Name              Null?    Type
    *      EMP_ID              NOT NULL NUMBER
    *      DEPT_ID                      NUMBER
    *      NAME                NOT NULL VARCHAR2(30)
    *      DATE_OF_BIRTH       NOT NULL DATE
    *      DATE_OF_HIRE        NOT NULL DATE
    *      MONTHLY_SALARY      NOT NULL NUMBER(15,2)
    *      POSITION            NOT NULL VARCHAR2(100)
    *      EXTENSION                    NUMBER
    *      OFFICE_LOCATION              VARCHAR2(100)
    * NOTE: This example will provide and call a method that creates the EMP
    *       table. The name of the method is called createTable() and is called
    *       from the main() method.
    public class WriteFileToTable {
        final static String driverClass    = "oracle.jdbc.driver.OracleDriver";
        final static String connectionURL  = "jdbc:oracle:thin:@localhost:1521:CUSTDB";
        final static String userID         = "scott";
        final static String userPassword   = "tiger";
        final static String inputFileName  = "Employee.txt";
        final static String TABLE_NAME     = "EMP";
        final static String DELIM          = ",";
        Connection   con                   = null;
         * Construct a WriteFileToTable object. This constructor will create an
         * Oracle database connection.
        public WriteFileToTable() {
            try {
                System.out.print("  Loading JDBC Driver  -> " + driverClass + "\n");
                Class.forName(driverClass).newInstance();
                System.out.print("  Connecting to        -> " + connectionURL + "\n");
                this.con = DriverManager.getConnection(connectionURL, userID, userPassword);
                System.out.print("  Connected as         -> " + userID + "\n");
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } catch (InstantiationException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (SQLException e) {
                e.printStackTrace();
         * Method used to create the initial EMP table. Before attempting to create
         * the table, this method will first try to drop the table.
        public void createTable() {
            Statement stmt = null;
            try {
                stmt = con.createStatement();
                System.out.print("  Dropping Table: " + TABLE_NAME + "\n");
                stmt.executeUpdate("DROP TABLE " + TABLE_NAME);
                System.out.print("    - Dropped Table...\n");
                System.out.print("  Closing Statement...\n");
                stmt.close();
            } catch (SQLException e) {
                System.out.print("    - Table " + TABLE_NAME + " did not exist.\n");
            try {
                stmt = con.createStatement();
                System.out.print("  Creating Table: " + TABLE_NAME + "\n");
                stmt.executeUpdate("CREATE TABLE emp (" +
                                 "    emp_id           NUMBER NOT NULL " +
                                 "  , dept_id          NUMBER " +
                                 "  , name             VARCHAR2(30)  NOT NULL " +
                                 "  , date_of_birth    DATE          NOT NULL " +
                                 "  , date_of_hire     DATE          NOT NULL " +
                                 "  , monthly_salary   NUMBER(15,2)  NOT NULL " +
                                 "  , position         VARCHAR2(100) NOT NULL " +
                                 "  , extension        NUMBER " +
                                 "  , office_location  VARCHAR2(100))");
                System.out.print("    - Created Table...\n");
                System.out.print("  Closing Statement...\n");
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
         * Method used to read records from Employee.txt file then write the records
         * to an Oracle table within the database named "EMP".
        public void performLoadWrite() {
            Statement stmt          = null;
            int       insertResults = 0;
            StringTokenizer st = null;
            String  emp_id;
            String  dept_id;
            String  name;
            String  date_of_birth;
            String  date_of_hire;
            String  monthly_salary;
            String  position;
            String  extension;
            String  office_location;
            try {
                System.out.print("  Creating Statement...\n");
                stmt = con.createStatement ();
                System.out.print("  Create FileReader Object for file: " + inputFileName + "...\n");
                FileReader inputFileReader = new FileReader(inputFileName);
                System.out.print("  Create BufferedReader Object for FileReader Object...\n");
                BufferedReader inputStream   = new BufferedReader(inputFileReader);
                String inLine = null;
                while ((inLine = inputStream.readLine()) != null) {
                    st = new StringTokenizer(inLine, DELIM);
                    emp_id   = st.nextToken();
                    dept_id  = st.nextToken();
                    name     = st.nextToken();
                    date_of_birth = st.nextToken();
                    date_of_hire = st.nextToken();
                    monthly_salary = st.nextToken();
                    position = st.nextToken();
                    extension = st.nextToken();
                    office_location = st.nextToken();
                    System.out.print("  Inserting value for [" + name + "]\n");
                    insertResults = stmt.executeUpdate(
                            "INSERT INTO " + TABLE_NAME + " VALUES (" +
                                      emp_id +
                            "  ,  " + dept_id +
                            "  , '" + name + "'" +
                            "  , '" + date_of_birth + "'" +
                            "  , '" + date_of_hire + "'" +
                            "  ,  " + monthly_salary +
                            "  , '" + position + "'" +
                            "  ,  " + extension +
                            "  , '" + office_location + "')");
                    System.out.print("    " + insertResults + " row created.\n");
                System.out.print("  Commiting Transaction...\n");
                con.commit();
                System.out.print("  Closing inputString...\n");
                inputStream.close();
                System.out.print("  Closing Statement...\n");
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
         * Method used to query records from the database table EMP. This method
         * can be used to verify all records have been correctly loaded from the
         * example text file "Employee.txt".
        public void queryRecords() {
            Statement stmt           = null;
            ResultSet rset           = null;
            int       deleteResults  = 0;
            int       rowNumber      = 0;
            int     emp_id;
            int     dept_id;
            String  name;
            String  date_of_birth;
            Date    date_of_birth_p;
            String  date_of_hire;
            Date    date_of_hire_p;
            float   monthly_salary;
            String  position;
            int     extension;
            String  office_location;
            try {
                SimpleDateFormat formatter      = new SimpleDateFormat("yyyy-MM-dd");
                NumberFormat     defaultFormat  =     NumberFormat.getCurrencyInstance();
                System.out.print("  Creating Statement...\n");
                stmt = con.createStatement ();
                System.out.print("  Opening query for table: " + TABLE_NAME + "...\n");
                rset = stmt.executeQuery ("SELECT * FROM emp ORDER BY emp_id");
                while (rset.next ()) {
                    rowNumber = rset.getRow();
                    emp_id = rset.getInt(1);
                    if ( rset.wasNull() )   {emp_id = -1;}
                    dept_id = rset.getInt(2);
                    if ( rset.wasNull() )   {dept_id = -1;}
                    name = rset.getString(3);
                    if ( rset.wasNull() )   {name = "<null>";}
                    date_of_birth = rset.getString(4);
                    if ( rset.wasNull() ) {date_of_birth = "1900-01-01";}
                    try {
                        date_of_birth_p = formatter.parse(date_of_birth);
                    } catch (ParseException e) {
                        date_of_birth_p = new Date(0);
                    date_of_hire = rset.getString(5);
                    if ( rset.wasNull() ) {date_of_hire = "1900-01-01";}
                    try {
                        date_of_hire_p = formatter.parse(date_of_hire);
                    } catch (ParseException e) {
                        date_of_hire_p = new Date(0);
                    monthly_salary = rset.getFloat(6);
                    if ( rset.wasNull() ) {monthly_salary = 0;}
                    position = rset.getString(7);
                    if ( rset.wasNull() ) {position = "<null>";}
                    extension = rset.getInt(8);
                    if ( rset.wasNull() )   {extension = -1;}
                    office_location = rset.getString(9);
                    if ( rset.wasNull() ) {office_location = "<null>";}
                    System.out.print(
                        "\n" +
                        "  RESULTS -> [R" + rowNumber + "] " + "\n" +
                        "      Employee ID     : " + emp_id + "\n" +
                        "      Department ID   : " + dept_id + "\n" +
                        "      Employee Name   : " + name + "\n" +
                        "      D.O.B.          : " + date_of_birth_p + "\n" +
                        "      Date of Hire    : " + date_of_hire_p + "\n" +
                        "      Monthly Salary  : " + defaultFormat.format(monthly_salary) + "\n" +
                        "      Position        : " + position + "\n" +
                        "      Extension       : x" + extension + "\n" +
                        "      Office Location : " + office_location +
                        "\n");
                System.out.print("  Closing ResultSet...\n");
                rset.close();
                System.out.print("  Closing Statement...\n");
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
         * Close down Oracle connection.
        public void closeConnection() {
            try {
                System.out.print("  Closing Connection...\n");
                con.close();
            } catch (SQLException e) {
                e.printStackTrace();
         * Sole entry point to the class and application.
         * @param args Array of String arguments.
         * @exception java.lang.InterruptedException
         *            Thrown from the Thread class.
        public static void main(String[] args)
                throws java.lang.InterruptedException {
            WriteFileToTable runExample = new WriteFileToTable();
            runExample.createTable();
            runExample.performLoadWrite();
            runExample.queryRecords();
            runExample.closeConnection();
        }

    Hi
    Thanks a lot. I ran the program with the MySql driver as follows:
    The errors are as follows: I will ttry to place the Driver in the Classpath. As far as I know the driver has been specified correctly this time.
    java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
         at java.net.URLClassLoader$1.run(Unknown Source)
         at java.security.AccessController.doPrivileged(Native Method)
         at java.net.URLClassLoader.findClass(Unknown Source)
         at java.lang.ClassLoader.loadClass(Unknown Source)
         at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
         at java.lang.ClassLoader.loadClass(Unknown Source)
         at java.lang.ClassLoader.loadClassInternal(Unknown Source)
         at java.lang.Class.forName0(Native Method)
         at java.lang.Class.forName(Unknown Source)
         at us.ilango.WriteAntennas.<init>(WriteAntennas.java:41)
         at us.ilango.WriteAntennas.main(WriteAntennas.java:377)
    java.lang.NullPointerException
         at us.ilango.WriteAntennas.createTable(WriteAntennas.java:70)
         at us.ilango.WriteAntennas.main(WriteAntennas.java:378)
    Exception in thread "main" Loading JDBC Driver -> com.mysql.jdbc.Driver
    The program is as follows:
    package us.ilango;
    * @author ilango
    import java.sql.DriverManager;
    import java.sql.Connection;
    import java.sql.Statement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.StringTokenizer;
    import java.io.FileReader;
    import java.io.BufferedReader;
    import java.io.IOException;
    public class WriteAntennas {
        final static String driverClass    = "com.mysql.jdbc.Driver";
        final static String connectionURL  = "jdbc:mysql://localhost/test2";
        final static String userID         = "brian";
        final static String userPassword   = " ";
        final static String inputFileName  = "CO.DAT";
        final static String TABLE_NAME     = "CELL";
        final static String DELIM          = "|";
        Connection   con                   = null;
        public WriteAntennas() {
            try {
                System.out.print("  Loading JDBC Driver  -> " + driverClass + "\n");
                Class.forName(driverClass).newInstance();
                System.out.print("  Connecting to        -> " + connectionURL + "\n");
                this.con = DriverManager.getConnection(connectionURL, userID, userPassword);
                System.out.print("  Connected as         -> " + userID + "\n");
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } catch (InstantiationException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (SQLException e) {
                e.printStackTrace();
         * Method used to create the initial EMP table. Before attempting to create
         * the table, this method will first try to drop the table.
        public void createTable() {
            Statement stmt=null;
            try {
                stmt = con.createStatement();
                System.out.print("  Dropping Table: " + TABLE_NAME + "\n");
                stmt.executeUpdate("DROP TABLE " + TABLE_NAME);
                System.out.print("    - Dropped Table...\n");
                System.out.print("  Closing Statement...\n");
                stmt.close();
            } catch (SQLException e) {
                System.out.print("    - Table " + TABLE_NAME + " did not exist.\n");
            try {
                stmt = con.createStatement();
                System.out.print("  Creating Table: " + TABLE_NAME + "\n");
                stmt.executeUpdate("create table TOWER_PUBACC_CO (" +
         "record_type               char(2)              null" +
         ", content_indicator         char(3)              null" +
         ", file_number               char(8)              null" +
         ", registration_number       char(7)              null" +
         ", unique_system_identifier  long(9,0)         not null" +
         ", coordinate_type           char(1)              not null" +
         ",latitude_degrees          int                  null" +
         ",latitude_minutes          int                  null" +
         ",latitude_seconds          int(4,1)         null" +
         ",latitude_direction        char(1)              null" +
         ",latitude_total_seconds    int(8,1)         null" +
         ",longitude_degrees         int                  null" +
         ",longitude_minutes         int                  null" +
         ",longitude_seconds         int(4,1)         null" +
         ",longitude_direction       char(1)              null" +
         ",longitude_total_seconds   int(8,1)         null)" );
                System.out.print("   created Table...\n");
                System.out.print("  closing Statement...\n");
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
        public void performLoadWrite() {
            Statement stmt          = null;
            int       insertResults = 0;
            StringTokenizer st = null;
            String record_type ;
            String  content_indicator;
            String file_number ;
            String registration_number;
             String unique_system_identifier ;
            String coordinate_type;
            String latitude_degrees;
            String  latitude_minutes;
            String latitude_seconds;
            String latitude_direction;
            String latitude_total_seconds;
            String longitude_degrees;
           String longitude_minutes;
           String longitude_seconds;
           String longitude_direction;
           String longitude_total_seconds;
            try {
                System.out.print("  Creating Statement...\n");
                stmt = con.createStatement ();
                System.out.print("  Create FileReader Object for file: " + inputFileName + "...\n");
                FileReader inputFileReader = new FileReader(inputFileName);
                System.out.print("  Create BufferedReader Object for FileReader Object...\n");
                BufferedReader inputStream   = new BufferedReader(inputFileReader);
                String inLine = null;
                while ((inLine = inputStream.readLine()) != null) {
                    st = new StringTokenizer(inLine, DELIM);
                    record_type   = st.nextToken();
                   content_indicator = st.nextToken();
                    file_number    = st.nextToken();
                    registration_number = st.nextToken();
                    unique_system_identifier = st.nextToken();
                   coordinate_type =st.nextToken();
                   latitude_degrees  = st.nextToken();
                   latitude_minutes = st.nextToken();
                    latitude_seconds=st.nextToken();
                   latitude_direction = st.nextToken();
                    latitude_total_seconds =st.nextToken();
                    longitude_degrees= st.nextToken();
                    longitude_minutes = st.nextToken();
                    longitude_seconds = st.nextToken();
                    longitude_direction=st.nextToken();
                    longitude_total_seconds =st.nextToken();
                    System.out.print("  Inserting value for [" + unique_system_identifier + "]\n");
                    insertResults = stmt.executeUpdate(
                            "INSERT INTO " + TABLE_NAME + " VALUES (" +
                                      record_type +
                            "  ,  " + content_indicator +
                            "  , '" + file_number + "'" +
                            "  , '" + registration_number + "'" +
                            "  , '" + unique_system_identifier + "'" +
                            "  ,  " + coordinate_type + "'" +
                            "  , '" + latitude_degrees + "'" +
                            "  ,  " + latitude_minutes + "'" +
                            "  , '" + latitude_seconds + "'" +
                            "  , '" + latitude_direction + "'" +
                            "  , '" + latitude_total_seconds + "'" +
                           "  , '" + longitude_minutes + "'" +
                           "  , '" + longitude_seconds + "'" +
                          "  , '" + longitude_direction + "'" +
                           "  , '" + longitude_total_seconds + "')");
                    System.out.print("    " + insertResults + " row created.\n");
                System.out.print("  Commiting Transaction...\n");
                con.commit();
                System.out.print("  Closing inputString...\n");
                inputStream.close();
                System.out.print("  Closing Statement...\n");
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
        public void queryRecords() {
            Statement stmt           = null;
            ResultSet rset           = null;
            int       deleteResults  = 0;
            int       rowNumber      = 0;
            String   record_type;
            String   content_indicator;
            String  file_number;
            String registration_number ;
            long  unique_system_identifier;
            String coordinate_type ;
            int   latitude_degrees ;
            int latitude_minutes ;
            int latitude_seconds;
            String latitude_direction;
            int  latitude_total_seconds;
            int     longitude_degrees;
             int longitude_minutes;
               int     longitude_seconds;
                 String longitude_direction;
           int  longitude_total_seconds;
            try {
                System.out.print("  Creating Statement...\n");
                stmt = con.createStatement ();
                System.out.print("  Opening query for table: " + TABLE_NAME + "...\n");
                rset = stmt.executeQuery ("SELECT * FROM cell ORDER BY unique_system_identifier");
                while (rset.next ()) {
                    rowNumber = rset.getRow();
                    unique_system_identifier = rset.getInt (1);
                    if ( rset.wasNull() )   {unique_system_identifier = -1;}
                    record_type = rset.getString (2);
                    if ( rset.wasNull() )   {record_type = "<null>";}
                    content_indicator = rset.getString(3);
                    if ( rset.wasNull() )   {content_indicator = "<null>";}
                    file_number = rset.getString(4);
                    if ( rset.wasNull() ) {file_number = "<null>";}
                    registration_number = rset.getString(5);
                    if ( rset.wasNull() ) {registration_number = "<null>";}
                    coordinate_type = rset.getString(6);
                    if ( rset.wasNull() )   {coordinate_type = "<null>";}
                    latitude_degrees = rset.getInt(7);
                    if ( rset.wasNull() ) {latitude_degrees = 1;}
    latitude_minutes = rset.getInt(8);
                    if ( rset.wasNull() ) {latitude_minutes = 1;}
    latitude_seconds = rset.getInt(9);
                    if ( rset.wasNull() ) {latitude_seconds = 1;}
    latitude_direction = rset.getString(10);
                    if ( rset.wasNull() ) {latitude_direction = "<null>";}
    latitude_total_seconds = rset.getInt(11);
                    if ( rset.wasNull() ) {latitude_total_seconds = 1;}
    longitude_degrees = rset.getInt(12);
                    if ( rset.wasNull() ) {longitude_degrees = 1;}
    longitude_minutes = rset.getInt(13);
                    if ( rset.wasNull() ) {longitude_minutes = 1;}
    longitude_seconds = rset.getInt(14);
                    if ( rset.wasNull() ) {longitude_seconds = 1;}
    longitude_direction = rset.getString(15);
                    if ( rset.wasNull() ) {longitude_direction = "<null>";}
    longitude_total_seconds = rset.getInt(16);
                    if ( rset.wasNull() ) {longitude_total_seconds = 1;}
                    System.out.print(
                        "\n" +
                        "  RESULTS -> [R" + rowNumber + "] " + "\n" +
                        "  Unique_System_Identifier         : " + unique_system_identifier  + "\n" +
                        "  Record_type     : " + record_type   + "\n" +
                        "  Content_Indicator      : " + content_indicator   + "\n" +
                        "  Registration_Number              : " + registration_number   + "\n" +
                        "  File_Number        : " +  file_number  + "\n" +
                        "  Coordinate_Type     : " + coordinate_type  + "\n" +
                        "  Latitude_Degrees          : " + latitude_degrees + "\n" +
                        "  Latitude_Minutes          : " + latitude_minutes + "\n" +
                        "  Latitude_Seconds           : " + latitude_seconds + "\n" +
                        " Latitude_Direction            : " + latitude_direction + "\n" +
                        "  Latitude_Total_Seconds           : " + latitude_total_seconds + "\n" +
                        "  Longitude_Degrees           : " + longitude_degrees + "\n" +
                        "  longitude_minutes           : " + longitude_minutes + "\n" +
                        "  Longitude_Seconds           : " + longitude_seconds + "\n" +
                       "     longitude_direction        : " + longitude_direction + "\n" +
                       "  Longitude_Total_Seconds           : " + longitude_total_seconds +
                       "\n");
                System.out.print("  Closing ResultSet...\n");
                rset.close();
                System.out.print("  Closing Statement...\n");
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
        public void closeConnection() {
            try {
                System.out.print("  Closing Connection...\n");
                con.close();
            } catch (SQLException e) {
                e.printStackTrace();
        public static void main(String[] args)
                throws java.lang.InterruptedException {
            WriteAntennas runJob = new WriteAntennas();
            runJob.createTable();
            runJob.performLoadWrite();
            runJob.queryRecords();
            runJob.closeConnection();
    }

Maybe you are looking for