Protocol Version 1.2 30.07.2001 Client -> Server Starting the connection the client send the path to the database to use for this connection (no way to change it yet), WITHOUT the trailing slash. To end the path the client send a 0-char. After that it sends the username and the password, each also ended by a 0-char. None of this can be changed. After this, the client can send queries. All queries are Strings with the query, followed by two 0-chars. Example: Client Server connect() -> accept() connection established "path/to/database.db\0" -> "username\0" -> "password\0" -> "SELECT FOO FROM BAR\0" -> wait(); "\0" -> processQuery("SELECT FOO FROM BAR") After reading, the server starts processing the query and sends the results to the client. The results will have form described later. To close the link the client send two 01-Chars. Server -> Client: @ % columnname1 : columnname2 : columnname3 : ... : columnnameN ; SQL-Type1 : SQL-Type2 : SQL-Type3 : ... : SQL-TypeN ; Value1-1 : Value2-1 : Value3-1 : ... : ValueN-1 ; ... Value1-M : Value2-M : Value3-M : ... : ValueN-M ; # Symbols: : Unicode-Value 00 ; Unicode-Value 01 # Unicode-Value 02 @ Unicode-Value 03 ^ Unicode-Value 05 & Unicode-Value 06 % Unicode-Value 07 Masquerading-Character is "\" with Unicode-Value 04. Those symbols are masqueraded in the result: : mit \: ; mit \; # mit \# @ mit \@ \ mit \\ ^ mit \^ & mit \& % mit \% Also the chars 08-31, Reserved for Future Use[tm]. : splits two columns ; splits two rows @ is the starting symbol # is end-symbol ^ signals an error-answer & signals an UpdateCount-answer % signals a ResultSet-answer Chars 08-32 reserved for future use. Example: Client Server "SELECT FOO FROM BAR;" -> <- "@ID:NAME:PLZ;INT:VARCHAR:CHAR(5);5:LeeChuck:;10:no name \#:12233;# If an error occured, the answer will be: @ ^ Error-Message ; SQL-State ; Error-Code ; # ^ is Unicode-Char 05. Error-Message is a message generated by the database as a String. SQL-State is the state of the SQL-Query as int. Error-Code is the code generated by the JDBC-Driver as int. If answer is Update, Delete, Insert, Alter or something, that returns the amount of affected rows, the answer will be: @ & UpdateCount ; # & is Unicode-Char 06.