ともさんのHP >プロブラミング >自作JavaLibrary >【JAVA】データベースにアクセスするためのクラスライブラリ

【JAVA】データベースにアクセスするためのクラスライブラリ

tomojavalib.comm.DbsCommは Javaでデータベースに接続するためのクラスです。
Java 楽天 でのデータベースアクセスはSQLなどを使って複雑な操作が可能ですが、 複雑な操作をしようとすると、プログラムソースも複雑になってしまい、訳が分からなくなります。

広告

そこで、私はこの単純な操作をするClassを使ってデータベースにアクセスしています。
tomojavalib.comm.DbsCommで出来るのは、データの追加と1件の読み込み、全てのデータの読み込みだけ。 読み込むデータは全てString形式で、追記も同様です。下手にいろいろな形式にすると汎用性がなくなるし、 複雑になってしまいます。データは読み込んでから各種形式に変換すれば良いので問題は生じません。
このクラスではデータベースへの追記や変更が出来ないのですが、一応、不自由なく使っています。
※このプログラムではJava8以降では動作しません。


データベース接続Javaプログラムソース


package tomojavalib.comm;

import java.sql.*;
import java.util.*;


public class DbsComm {

   private String url; // "jdbc:odbc:"+接続対象
  private String dbs; //接続対象
  private String user = "tomo";    //user accessでは意味なし
  private String password = "tomo";  //password accessでは意味なし
  private Connection con = null;  //Connection object
  private ResultSet rs;
  private Statement stmt;
  private String gettmp[];    //検索結果の一時置き場
  private boolean next = false;
  /**dataの入れ物[][]の1番目は行(データの数row)。2番目は列(要素の数col)*/
  public String data[][] = null;
  /**dataのメンバー*/
  public String member[]= null;
  /**取り出したdataの数*/
  public int datano = 0;




/**
 * このクラスの試験用
 */
 public static void main(String args[]){
  DbsComm dbc ;

  String dbs = "test";
  String member[] = { "t1" , "t2" , "t3" , "t4" };
  dbc = new DbsComm( dbs , member );

  try{
  String addata[] = {"I","j","k","l"};
  dbc.addData( addata );
  }catch (Exception e){ e.printStackTrace(); }

  try{
  dbc.getAll();
  }catch (Exception e){ e.printStackTrace(); }

  for(int I=0; I<dbc.datano ; I++)
  {
  for(int ii=0; ii<member.length ; ii++)
  {
  System.out.println( dbc.data[I][ii] );
  } 
  } 
 }


 /**
  * データベースに1件のデータを追加します。<BR>
  * @param String addata[] :追加するdata。Memberと必ず数が同一であること<BR>
  */
 public void addData( String addata[] ) throws Exception 
 {
  if( (addata.length == member.length)==false) {Exception e = new Exception(" 追加するdataの数が異なります_add "); throw e;}
  open();    //dbに接続
  try{
  String sql = "INSERT INTO " + dbs + " ( " ;
  for( int I=0 ;I<member.length-1 ; I++){ sql = sql + member[I] + " , "; }
  sql = sql + member[ member.length-1 ] + " ) VALUES ( '" ;
  for( int I=0 ;I<member.length-1 ; I++){ sql = sql + addata[I] + "','"; } 
  sql = sql + addata[ member.length-1 ] + "')" ;
  byte[] sjis_row_bytes = sql.getBytes("SJIS");
  String sql2 = new String( sjis_row_bytes , "SJIS");
  //System.out.println(sql2);
  stmt.executeUpdate( sql2 );
  close();  //db切り離し
  }catch(SQLException ex){ex.printStackTrace(); System.out.println("add内でエラー発生"); System.exit(-1);
  }catch(Exception ex){ex.printStackTrace();  }
 }


 /**
  * データベースに登録されているすべてのデータを読み込みます。<BR>
  * 読み込んだデータはdataはdata[][]に入ります。<BR>
  * @return なし<BR>
  */
 public void getAll() throws Exception {
  Vector memtmp = new Vector();
  open();    //dbに接続
  int check = 0;
  try{
  String sql = "select * from " + dbs;
  //System.out.print( sql );
  rs = stmt.executeQuery(sql);
  }catch(SQLException e){ e.printStackTrace(); throw e ;
  }catch(Exception e){ e.printStackTrace(); throw e ;}
  while( next() ){
  check ++ ;
  for( int I = 0 ; I<member.length ; I++){ 
   memtmp.addElement( (Object)gettmp[I] ); 
  }
  }
  rs.close();
  close();  //db切り離し
  if( check == 0 ){Exception e = new Exception(" 要素なし_DbsConn "); throw e; }

  data = new String[ (int)( memtmp.size()/member.length ) ][ (int)member.length ];
  int iii = -1 ;
  for(int ii=0 ; ii < (int)( memtmp.size()/member.length ) ; ii++ )
  {
  for(int I=0 ; I < (int)member.length ; I++)
  {
  iii = iii + 1 ;
  data[ii][I] = (String)memtmp.get(iii);
  }
  }
  datano = (int)( memtmp.size()/member.length );
  memtmp.clear();
 return;
 }


 
 /**
  * データベースから1件のデータを読み込みます。
  * もう一度実行すると、1つ前のデータを読み込みます。
  */
 
  public boolean next(){

  try{
  //次の結果へ
  next = rs.next();
  //結果を変数に格納
  if( next == true ){
  for( int I = 0 ; I<member.length ;I++){
  gettmp[I] = rs.getString( member[I] );
  }
  }
  }catch(SQLException e){System.out.println( "*****nexterr******a" );
  }catch(Exception e){ System.out.println( "*****nexterr******b" );e.printStackTrace();  }
  return next;
  }




  /**
  * データベースに接続する
  */
 public void open(){
  try{
  // jdbcドライバロード
  Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver");
  // dbに接続
  con = DriverManager.getConnection(url,user,password);
  // SQL コンテナ作成
  /*Statement*/
  stmt = con.createStatement();
  }catch(SQLException e){  System.out.println( "*****connerr******" );
  }catch(Exception e){ System.out.println( "*****connerr******" );e.printStackTrace();  }
 }

広告


 /**
  * データベースを切断する
  */
  public void close(){
  try{
  stmt.close();
  con.close();
  }catch(SQLException e){
  while(e != null){
  System.err.println(e.getMessage());
  System.err.println(e.getSQLState());
  System.err.println(e.getErrorCode());
  System.out.println("");
  e = e.getNextException();
  }
  }catch(Exception e){System.out.println( "*****closeerr******" );
  e.printStackTrace();
  }finally{
  }try{ con.close();
  }catch(SQLException e){System.out.println( "*****closeerr******" );}
  }


/**
 * コンストラクタ   
 * @param tdbs 接続するデータベース名
 * @param mem 接続データベースのメンバー
 */
 public DbsComm( String tdbs , String mem[] ){
  dbs = tdbs ;
  url = "jdbc:odbc:" + tdbs ; 
  member = mem ;
  gettmp = new String[ member.length ];
 }
 

}

最終更新日: 2017-03-01 07:32:39

ともさんのHP >プロブラミング >自作JavaLibrary >【JAVA】データベースにアクセスするためのクラスライブラリ

このエントリーをはてなブックマークに追加
広告
おすすめ記事
新着ページ

男性用ズボンを作りました  
竹の伐採時期と油抜きの方法  
スイートピーの栽培、手入れ、増やしかた  
金太郎飴工法による小屋の建て方  
炭焼き窯作りました  
薪ストーブ  
ツバキの栽培、手入れ、増やしかた  
柿の剪定道具  
新旧文化式とドレメ式原型製図を比較  
玉縁ボタンホールの縫い方  
キャスケット型紙の設計方法と型紙ダウンロード  

私の他のサイト

ともさんの箱庭(ブログ)
家庭菜園
3D-CAD
洋裁CAD

いいねなど

 RSS 
PageSpeedInsights
html5チェック

Author: Tomoyuki Ito

このサイトの文章・写真の無断転載を禁じます