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));

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值