import java.util.*;
import java.sql.*;
public class userTBL {
/*
* JDBC ドライバクラス名
*/
public static final String JDBCDriverName = DBKankyo.JDBCDriverName;
/*
* JDBC 接続URL
*/
public static final String JDBCURL = DBKankyo.JDBCURL;
/*
* ユーザー名
*/
public static final String JDBCUserName = DBKankyo.JDBCUserName;
/*
* パスワード
*/
public static final String JDBCPassword = DBKankyo.JDBCPassword;
/*
* SQL実行<BR>
* @return int 0:OK,1:Error
*/
public int execute(String cmd)
{
try
{
// ドライバクラスをロード
Class.forName(JDBCDriverName);
// データベースへ接続
Connection con =
DriverManager.getConnection(JDBCURL,JDBCUserName,JDBCPassword);
// ステートメントオブジェクトを生成
Statement stmt = con.createStatement();
// 実行
stmt.execute(cmd);
// データベースから切断
stmt.close();
con.close();
}
catch (Exception e)
{
e.printStackTrace();
return -1;
}
return 0;
}
/*
* SQLの検索実行<BR>
* @return Vector 結果(1レコード1HashMapで入っている)
*/
public Vector selectExecute(String cmd)
{
Vector allData = new Vector();
try
{
// ドライバクラスをロード
Class.forName(JDBCDriverName);
// データベースへ接続
Connection con =
DriverManager.getConnection(JDBCURL,JDBCUserName,JDBCPassword);
// ステートメントオブジェクトを生成
Statement stmt = con.createStatement();
// クエリーを実行して結果セットを取得
ResultSet rs = stmt.executeQuery(cmd);
ResultSetMetaData meta = rs.getMetaData();
// 検索された行数分ループ
while(rs.next())
{
HashMap mp = new HashMap();
for(int i = 1 ; i <= meta.getColumnCount(); i ++ )
{
mp.put(meta.getColumnName(i),
rs.getString(meta.getColumnName(i)) );
}
allData.add(mp);
}
// データベースから切断
stmt.close();
con.close();
}
catch (Exception e)
{
e.printStackTrace();
return null;
}
return allData;
}
/*
* 検索<BR>
* @param Vector komoku 検索する項目
* @param Vector where 検索条件
* @return int 0:OK,1:Error
*/
public Vector select(Vector komoku,Vector where)
{
// Select文の初め
StringBuffer sqlbuf = new StringBuffer("SELECT ");
// 項目名の羅列
if ( komoku == null )
{
sqlbuf.append("*");
}
else
{
for(int i = 0 ; i < komoku.size() ; i ++ )
{
if ( i > 0 )
{
sqlbuf.append(",");
}
String taisho = (String)komoku.elementAt(i);
sqlbuf.append(taisho);
}
}
// テーブル名が入る
sqlbuf.append(" FROM TBL_A ");
// 条件式の作成
String wstr = makeWhere(where);
if ( wstr != null )
{
sqlbuf.append(" WHERE " + wstr);
}
return selectExec(sqlbuf.toString());
}
/*
* 追加<BR>
* @param HashMap taisho 対象、NULLのときエラー
* @return int 0:OK,1:Error
*/
public int insert(HashMap taisho)
{
// ハッシュマップに入っている値を受け取り
String name = (String)taisho.get("name");
String pass = (String)taisho.get("pass");
String auth = (String)taisho.get("auth");
int out_flg;
// ハッシュマップに入っている値を受け取り
StringBuffer sqlbuf
= new StringBuffer("INSERT INTO userTBL(");
//==========================//
// 項目名の書き出し //
//==========================//
out_flg = 0;
//ユーザー名の設定
if ( name != null )
{
if ( out_flg == 0 )
{
out_flg = 1;
}
else
{
sqlbuf.append(",");
}
sqlbuf.append("name");
}
//パスワードの設定
if ( pass != null )
{
if ( out_flg == 0 )
{
out_flg = 1;
}
else
{
sqlbuf.append(",");
}
sqlbuf.append("pass");
}
//権限の設定
if ( auth != null )
{
if ( out_flg == 0 )
{
out_flg = 1;
}
else
{
sqlbuf.append(",");
}
sqlbuf.append("auth");
}
// ") VALUES ("を書き出し
sqlbuf.append(") VALUES (");
//==========================//
// 値の書き出し //
//==========================//
out_flg = 0;
//ユーザー名の設定
if ( name != null )
{
if ( out_flg == 0 )
{
out_flg = 1;
}
else
{
sqlbuf.append(",");
}
sqlbuf.append("'");
sqlbuf.append(name);
sqlbuf.append("'");
}
//パスワードの設定
if ( pass != null )
{
if ( out_flg == 0 )
{
out_flg = 1;
}
else
{
sqlbuf.append(",");
}
sqlbuf.append("'");
sqlbuf.append(pass);
sqlbuf.append("'");
}
//権限の設定
if ( auth != null )
{
if ( out_flg == 0 )
{
out_flg = 1;
}
else
{
sqlbuf.append(",");
}
sqlbuf.append("");
sqlbuf.append(auth);
sqlbuf.append("");
}
// おしまい部分
sqlbuf.append(")");
// 実行
return execute(sqlbuf.toString());
}
/*
* 削除<BR>
* @param Vector where 対象、NULLのとき、全削除
* @return int 0:OK,1:Error
*/
public int delete(HashMap where)
{
// SQL文の書き出し
StringBuffer sqlbuf = new StringBuffer("DELETE FROM userTBL");
if ( where != null )
{
String wstr = makeWhere(where);
if ( wstr != null )
{
sqlbuf.append(" WHERE " + wstr);
}
}
return execute(sqlbuf.toString());
}
/*
* 更新<BR>
* @param HashMap naiyo set句の内容
* @param Vector where 対象、NULLのとき、全削除
* @return int 0:OK,1:Error
*/
public int update(HashMap naiyo,Vector where)
{
// データチェック
if ( naiyo == null )
{
return -1;
}
if ( naiyo.size() <= 0 )
{
return -1;
}
// SQL文の書き出し
StringBuffer sqlbuf = new StringBuffer("UPDATE userTBL SET ");
String rec = setOneRec(naiyo);
if ( rec == null )
{
return -1;
}
sqlbuf.append(rec);
String wstr = makeWhere(where);
if ( wstr != null )
{
sqlbuf.append(" WHERE " + wstr);
}
return exec(sqlbuf.toString());
}
/*
* where句を作る
* @param Vector whete
* @return String 結果(1レコード1ハッシュマップで入っている)
*/
public String makeWhere(Vector where)
{
StringBuffer buf = new StringBuffer();
// WHEREデータがない
if ( where == null )
{
return null;
}
// WHEREデータがない
else if ( where.size() == 0 )
{
return null;
}
else
{
// WHEREデータ1行分のとき
if ( where.size() == 1 )
{
HashMap map = (HashMap)where.elementAt(0);
if ( map.get("*zyoken") != null )
{
// 条件文が指定してある
buf.append((String)map.get("*zyoken"));
}
else
{
// 条件文は自分でつくる-1行分
buf.append(whereOneRec(map));
}
}
// 条件文は自分でつくる-複数行アリ=ORでつなぐ
else
{
for(int i = 0 ; i < where.size() ; i ++ )
{
if ( i == 0 )
{
buf.append("( ");
}
else
{
buf.append("OR ( ");
}
buf.append(whereOneRec((HashMap)where.elementAt(i)));
buf.append(" ) ");
}
}
}
return buf.toString();
}
/*
* where句の検索条件のAND1個分を作る
* @param HashMap taisho
* @return String 結果(1レコード1ハッシュマップで入っている)
*/
public String whereOneRec(HashMap taisho)
{
return makeOneRec(taisho," AND ");
}
/*
* set句の更新条件を作る
* @param HashMap taisho
* @return String 結果(1レコード1ハッシュマップで入っている)
*/
public String setOneRec(HashMap taisho)
{
return makeOneRec(taisho," , ");
}
/*
* where句の検索条件のAND1個分を作る
* @param HashMap taisho
* @return String 結果(1レコード1ハッシュマップで入っている)
*/
public String makeOneRec(HashMap taisho,String kugiri)
{
StringBuffer buf = new StringBuffer();
String name = (String)taisho.get("name");
String pass = (String)taisho.get("pass");
String kind = (String)taisho.get("kind");
int out_flg = 0;
//ユーザー名の設定
if ( name != null )
{
if ( out_flg == 0 )
{
out_flg = 1;
}
else
{
buf.append(kugiri);
}
buf.append("name =");
buf.append("'");
buf.append(name);
buf.append("'");
}
//パスワードの設定
if ( pass != null )
{
if ( out_flg == 0 )
{
out_flg = 1;
}
else
{
buf.append(kugiri);
}
buf.append("pass =");
buf.append("'");
buf.append(pass);
buf.append("'");
}
//ユーザー種別の設定
if ( kind != null )
{
if ( out_flg == 0 )
{
out_flg = 1;
}
else
{
buf.append(kugiri);
}
buf.append("kind =");
buf.append("");
buf.append(kind);
buf.append("");
}
return buf.toString();
}
}
|