您的位置:首页 > 编程语言 > Java开发

JAVA访问firebird数据库之Jaybird-2.1.6JDK_1.5之综合使用实例

2009-11-24 17:20 399 查看
 一、FB数据库操作类如下:

import java.io.ByteArrayInputStream;
import java.sql.*;
import org.firebirdsql.jdbc.*;
public class DataBaseOperation 
{
 private java.sql.Connection Connection;
    public  static int TEST_ROW_COUNT = 100;
   
    public  boolean FBConnection(String DBName,
                           String DBType,
                           String DBUserName,
                           String DBPassword)
    {
     org.firebirdsql.pool.FBWrappingDataSource dataSource = new org.firebirdsql.pool.FBWrappingDataSource();
        dataSource.setDatabase (DBName);
        dataSource.setDescription ("An example database of employees");
     dataSource.setType(DBType);
        dataSource.setEncoding("ISO8859_1");
        try
        {
         dataSource.setLoginTimeout(10);
            Connection = dataSource.getConnection (DBUserName, DBPassword);
        }
        catch (java.sql.SQLException e)
        {
      e.printStackTrace();
            System.out.println ("sql exception: " + e.getMessage ());
        }
        if(Connection!=null)
     return true;
        else
        return false;
    }
    public DataBaseOperation (String DBName,String DBType,String DBUserName,String DBPassword)
    {
     Connection=null;
     this.FBConnection(DBName,DBType, DBUserName,DBPassword);
    }
    public void CreateFBTable(String CreateSqlText)
    {
     java.sql.Statement stmt=null;
     try
     {
      stmt = Connection.createStatement();
      stmt.executeUpdate(CreateSqlText);
      stmt.close();
     }
     catch (Exception e) {}
    }
    public ResultSet QueryFBTable(String SelectText)
    {
     Statement stmt=null;//java.sql.Statement
     ResultSet rs=null;//java.sql.ResultSet
     try
     {
      stmt = Connection.createStatement();
      rs=stmt.executeQuery(SelectText);
      stmt.close();
     }
     catch (Exception e) {}
  if(rs!=null)
  {
   return rs;
  } 
  else
  {
   return null;
  }
    }
    public String GetStringFieldFromFB(ResultSet rs,int fieldColumsID)
    {
     String sringField="";
        try
     {
         FBBlob.FBBlobInputStream sringOut;
         sringOut= (FBBlob.FBBlobInputStream)rs.getBinaryStream(fieldColumsID);
            int blobSize = (int)sringOut.length();
            byte[] fullBlob = new byte[blobSize];
            sringOut.readFully(fullBlob);
            sringField=new String(fullBlob);
     }
        catch (Exception e) {}
        return sringField;
    }
    public void ConvertStringToFBString(String InputString,PreparedStatement ps,int fieldColumsID)
    {
     try
     {
         ByteArrayInputStream sringIn = new ByteArrayInputStream(InputString.getBytes()); 
            ps.setBinaryStream(fieldColumsID, sringIn,InputString.getBytes().length);
     }
        catch (Exception e) {}
    }
    public void ConnectionTest()
    {
        String str="SELECT * FROM employee";
        try
        {
         Statement stmt = Connection.createStatement();
         ResultSet rs=stmt.executeQuery(str);
         while(rs.next())
          System.out.println("a1 = " + rs.getString(1));
         stmt.close();
        }
        catch(Exception e){}
    }
    public void InsertTest(String InsertTxt,int fieldNum,String [] args)
    {
        try
        {
         Connection.setAutoCommit(false);
         PreparedStatement ps = Connection.prepareStatement(InsertTxt);
         ps.setInt(1, Integer.parseInt(args[0]));
         System.out.println(args[0]);
         for(int i=1;i<fieldNum;i++)
         {
          ConvertStringToFBString(args[i],ps,i+1);
          System.out.println(args[i]);
         }
            ps.executeUpdate();
            ps.close();
            Connection.commit();
        }
        catch(Exception e){}

    }
    public void SelectStringFieldTest(String SelectTxt,int[] StringfieldIDs)
    {
        try
        {
         Statement stmt = Connection.createStatement();
         ResultSet rs = stmt.executeQuery(SelectTxt);
         while(rs.next())
         {
          System.out.println("id="+rs.getString(1));
          for(int i=0;i<StringfieldIDs.length;i++)
          {
           String field=GetStringFieldFromFB(rs,i+2);
           System.out.println("field"+(i+2)+":data="+field);
          }
          System.out.println();
         }
         stmt.close();
        }
        catch(Exception e){}
    }
}
二、实例访问类如下:

import org.firebirdsql.jdbc.*;
import org.firebirdsql.jdbc.field.*;
public class JaybirdTest {
    public static final String CREATE_TABLE =
        "CREATE TABLE test_blob(" +
        "  id INTEGER, " +
        "  data BLOB SUB_TYPE 1  " +
        ")";
    public static final String INSERT_TABLE="INSERT INTO test_blob(id, data) VALUES (?, ?)";
    public static final String SELECT_TXT="SELECT id, data FROM test_blob";
    public static final String DBName="../data/ROSEOUTLOOKINC.FDB";
    public static final String DBType="LOCAL";
    public static final String DBUserName="sysdba";
    public static final String DBPassword="masterkey";
    public static void main(String[] args)
    {
     try
     {
      DataBaseOperation fb=new DataBaseOperation(DBName,DBType, DBUserName,DBPassword);
      fb.ConnectionTest();
      String [] field={"200","中国IT实验室+CSDN网络"};
      int []StringfieldIDs={2};
      fb.InsertTest(INSERT_TABLE,2,field);
      fb.SelectStringFieldTest(SELECT_TXT, StringfieldIDs);
      //fb.CreateFBTable(CREATE_TABLE);
     }
     catch(Exception e)
     {
      System.out.println("Exception");
     }
    }
}
三、关于我即将发布的JAVA访问firebird数据库之Jaybird-2.1.6JDK_1.5之综合使用实例之使用方法如下:

1、解压该文件夹到D盘
2、运行D:/firebird_jaybird/FFIREBIRDfirebird数据库相关链接库文件/ 文件夹下的
   Firebird-2.1.3.18185_0_Win32.exe,安装FB数据库
3、将D:/firebird_jaybird/FFIREBIRDfirebird数据库相关链接库文件/ 文件夹下的
   全部DLL文件拷贝到 C:/WINDOWS/system32 目录下
4、在MyEclipse中加载加载D:/firebird_jaybird 文件夹下的jaybird工程,或者直接加载
   D:/firebird_jaybird/jaybird/src 文件夹下的两个类
  (但是需要将D:/firebird_jaybird  文件夹下的 data和JayBirdJar 两个文件夹拷贝到你的工程中)
5、将D:/firebird_jaybird/JayBirdJar 文件夹下的jar文件加载到当前工程中
6、运行JaybirdTest.java文件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息