Hello,

I created the following sample code to test the BLOB data type.

I am using sqlite-jdbc driver provided at
(http://www.xerial.org/trac/Xerial/wiki/SQLiteJDBC).

The following is the source code (SSCE).

package org.sqlite;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class MainDriver {


        public static void main(String[] args) {
                new MainDriver();
        }


        public MainDriver() {

                //Buffers to read and write
                byte[] writeBuffer = new byte[10];
                byte[] readBuffer = null;
                for (int i = 1; i < 10; i++) {
                        writeBuffer[i] = (byte)i;
                }

                //Database objects
                Connection conn = null;
                Statement stat = null;
                PreparedStatement prep = null;

                //Load the database driver
                try {
                        System.loadLibrary("sqlite");
                        Class.forName("org.sqlite.JDBC");
                } catch (Exception e) {
                        System.err.println("Could not load sqlite library or 
instantiate the
database driver.");
                        System.err.println(e);
                        e.printStackTrace();
                        return;
                }

                //Open a connection to the database
                try {
                        conn = DriverManager.getConnection("jdbc:sqlite:" + 
"file.db");
                } catch (SQLException e) {
                        System.err.println("Could not open a connection to the 
database with name
file.db");
                        System.err.println(e);
                        e.printStackTrace();
                        return;
                }

                //Create a table
                try {
                        stat = conn.createStatement();
                        stat.execute("CREATE TABLE TEST (model BLOB NOT NULL)");
                        stat.close();
                } catch (SQLException e) {
                        System.err.println("The table could not be created.");
                        System.err.println(e);
                        e.printStackTrace();
                        return;
                }

                //Write buffer into the database
                try {
                        conn.setAutoCommit(false);
                        prep = conn.prepareStatement("INSERT INTO TEST (model) 
VALUES(?)");
                        prep.setBytes(1, writeBuffer);
                        prep.addBatch();
                        prep.executeBatch();
                        conn.setAutoCommit(true);
                        prep.close();
                } catch (SQLException e) {
                        System.err.println("The buffer could not be written to 
the database.");
                        System.err.println(e);
                        e.printStackTrace();
                        return;
                }

                //Read buffer from the database
                try {
                        stat = conn.createStatement();
                        ResultSet rs = stat.executeQuery("SELECT * FROM TEST");
                        readBuffer = rs.getBytes(1);
                        rs.close();
                        stat.close();
                } catch (SQLException e) {
                        System.err.println("The buffer could not be read");
                        System.err.println(e);
                        e.printStackTrace();
                }

                //Close the database
                try {
                        conn.close();
                } catch (SQLException e) {
                        System.err.println("Database could not be closed");
                        System.err.println(e);
                        e.printStackTrace();
                }

                //Print the buffers
                System.out.print("Write buffer = ");
                for (int i = 0; i < writeBuffer.length; i++) {
                        System.out.print(writeBuffer[i]);
                }
                System.out.println();
                System.out.print("Read  buffer = ");
                for (int i = 0; i < readBuffer.length; i++) {
                        System.out.print(readBuffer[i]);
                }
                System.out.println();

                //Check the md5sum
                try {
                        java.security.MessageDigest digest =
java.security.MessageDigest.getInstance("MD5");
                        byte[] md5sum = null;
                        java.math.BigInteger bigInt = null;

                        //Write buffer
                        digest.reset();
                        digest.update(writeBuffer);
                        md5sum = digest.digest();
                        bigInt = new java.math.BigInteger(1, md5sum);
                        System.out.println("MD5 checksum of write buffer = " +
bigInt.toString(16));

                        //Read buffer
                        digest.reset();
                        digest.update(readBuffer);
                        md5sum = digest.digest();
                        bigInt = new java.math.BigInteger(1, md5sum);
                        System.out.println("MD5 checksum of read  buffer = " +
bigInt.toString(16));
                } catch (Exception e) {
                        System.err.println("MD5 checksum not available");
                        return;
                }
        }


}

The exact error message is as follows.

The buffer could not be written to the database.
java.sql.SQLException: TEST.model may not be NULL
java.sql.SQLException: TEST.model may not be NULL
        at org.sqlite.DB.throwex(DB.java:427)
        at org.sqlite.DB.executeBatch(DB.java:352)
        at org.sqlite.PrepStmt.executeBatch(PrepStmt.java:104)
        at org.sqlite.MainDriver.<init>(MainDriver.java:71)
        at org.sqlite.MainDriver.main(MainDriver.java:14)


Basically, the column with name "model" has data type BLOB, and null is
being written to that column. When I build my application on linux,
everything works just fine. But, on windows, it works fine the downloaded
sqlite dll but not with my own dll.



Pavel Ivanov-2 wrote:
> 
>> I can create the dll, but it does not work with BLOB data type. It works
>> with other data types. The dll that I downloaded from the sqlite.org
>> website
>> works with BLOB data type.
>>
>> Any help would be appreciated.
> 
> Any pointers on what doesn't work for you and how it works instead of
> intended behavior would be appreciated too.
> 
> 
> Pavel
> 
-- 
View this message in context: 
http://old.nabble.com/Build-instructions-for-Winodws-with-unicode-support-tp31315626p31317012.html
Sent from the SQLite mailing list archive at Nabble.com.

_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to