Java實測FireBird的中文檢索

在我用Delphi寫的一個程序裏中文like '%中文%' 始終不行,不是出來的符合條件的數據,而是所有的數據,在Firebird.net.cn中也有人提到這個問題,說FB對中文支持的不好。我的同事用.net實現了完美無缺的中文like.今天我用Java也是現了中文like,很正常,沒有問題。細想起來,可能是Delphi的驅動有問題,不是驅動本身有問題,就是在驅動打開數據庫時要指定編碼集,也可能是我在傳遞數據是的字符串格式有問題。既然不是Firebird的問題就好辦了。

測試代碼如下:


package jfb;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.sql.*;

// import org.firebirdsql.jdbc.*;

public class JFb
{

 /**
  * @param args
  */
 public static void main( String[] args ) throws ClassNotFoundException,
   SQLException, IOException
 {
  // TODO 自動生成方法存根
  Class.forName( "org.firebirdsql.jdbc.FBDriver" );
  Connection conn = DriverManager
    .getConnection(
      "jdbc:firebirdsql:127.0.0.1/3050:d://FB_TEST.FDB?lc_ctype=UNICODE_FSS",
      "sysdba", "masterkey" );
  int select;
  BufferedReader cin = new BufferedReader( new InputStreamReader(
    System.in ) );
  Statement cmd = conn.createStatement();
  String param = null;
  do {

   System.out.println( "0: exit" );
   System.out.println( "1: insert" );
   System.out.println( "2: select all" );
   System.out.println( "3: select like" );

   param = cin.readLine();
   select = Integer.parseInt( param );

   switch ( select ) {
   case 0 :
    System.out.println( "System Exit" );
    break;
   case 1 :
    System.out.println( "請輸入要插入的數據:" );
    param = cin.readLine();
    param = "insert into aa(BB)values ('" + param
      + "')";
    System.out.println( param );
    if ( cmd.executeUpdate( param ) != 0 ) {
     System.out.println( "執行成功" );

    } else {

     System.out.println( "執行失敗" );
    }
    break;
   case 2 :
    System.out.println( "輸出所有數據:" );
    ResultSet rs = cmd
      .executeQuery( "select * from aa" );
    while ( rs.next() ) {
     System.out
       .println( rs
         .getString( "bb" ) );
    }

    break;
   case 3 :
    System.out.println( "請輸入要查詢的數據:" );
    param = cin.readLine();
    param = "select * from aa  where bb like '%"
      + param.trim() + "%'";
    System.out.println( param );
    ResultSet rsa = cmd.executeQuery( param );
    while ( rsa.next() ) {
     System.out.println( rsa
       .getString( "bb" ) );
    }

   }
   System.out.println( "=============================" );

  } while ( select != 0 );

  conn.close();

 }
}

 

建庫語句:

create database 'd:/fb_test.fdb'  default character set utf8;

create table aa( bb varchar(255));

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章