2009年8月25日火曜日

SELECT と ResultSet

http://www.02.246.ne.jp/~torutk/javahow2/jdbc_viewtable.html

ResultSetのメソッド紹介

http://publib.boulder.ibm.com/html/as400/v4r5/ic2962/info/java/rzahh/javadoc/com.ibm.as400.access.AS400JDBCResultSetMetaData.html#getColumnCount()

2009年8月6日木曜日

ソース ソース

http://www.google.com/notebook/public/15235192903273654237/BDQp8DQoQsZek8K4k?hl=ja

2009年8月5日水曜日

span styleの使い方

HelloServlet

SQLコントロールの応用例

//パッケージ
package left;

//インポート
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
import java.util.*;
import left.*;

public class BookSearch extends HttpServlet
{
//index.html(トップページ)から、本や雑誌のリンクから来る
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws IOException, ServletException
{
// 文字エンコードの設定
req.setCharacterEncoding("Shift_JIS");

//検索文字列を取得
String strSearch = req.getParameter("search");
String strType = req.getParameter("booktype");
String strSort = req.getParameter("sort");

ResultSet rs = null;

if(strSearch != null) // 文字列検索
{
if(strSearch.startsWith("_"))
strSearch = "='" + strSearch.substring(1) + "'"; // ランキングまたはランダムリンク
else
strSearch = "like '%" + strSearch + "%'"; // 通常検索

//検索ボックスに入力された文字列をNameに含む列を出す。
rs = SqlControl.ExecuteSelect("select * from left_shohin_m where name " + strSearch + " order by id");
}
else if(strType != null) // ジャンル検索
{
//押されたリンクのTypeのジャンルIDの内容を取得
rs = SqlControl.ExecuteSelect("select * from left_shohin_m where genre=" + strType + " order by id");
}
else // トップメニュー
{
// 商品テーブルを全て取得
String strSql = "select * from left_shohin_m";

if(strSort != null)
{
if(strSort.equals("sale"))
strSql += " order by totalsale desc";
else
strSql += " order by " + strSort;
}
else
strSql += " order by totalsale desc";

rs = SqlControl.ExecuteSelect(strSql);
}

//List作成。Book型のArrayList
ArrayList BookList = new ArrayList();

try
{
//セレクトした商品をクラスに入れて、
while(rs.next())
{
Book book = new Book();

book.setBookID(rs.getInt("ID"));
book.setBookName(rs.getString("NAME"));
book.setCompany(rs.getString("PUBLISHER"));
String strAuthor = rs.getString("AUTHOR");
book.setWriterName((strAuthor == null) ? "" : strAuthor);
book.setPrice(rs.getInt("PRICE"));
book.setGenreID(rs.getInt("GENRE"));
book.setComment(rs.getString("INFO"));
book.setTotalSale(rs.getInt("totalsale"));

//それをリストに追加していく。
BookList.add(book);
}
}
catch(Exception e)
{
}

// DBを閉じる
SqlControl.CloseDb();

// トップメニュー表示時はリストをランダム抽出した6件にする
if(strSearch == null && strType == null && strSort == null)
{
ArrayList ranking = new ArrayList();
for(int i = 0; i < 3; i++)
{
if(i < BookList.size())
ranking.add(BookList.get(i));
}

// ランキングをセッションに格納
req.getSession().setAttribute("ranking", ranking);

// 全件検索結果を一時保存リストにコピー
ArrayList tempList = new ArrayList();
for(int i = 0; i < BookList.size(); i++)
tempList.add(BookList.get(i));

// リストをクリア
BookList.clear();

//6冊を決める。
for(int i = 0; i < 6; i++)
{
//リスト内でランダムで番号を取得
int Random = (int)(Math.random() * tempList.size());

//その番号に登録してある本を、トップに表示する本のリストに入れていく。
BookList.add(tempList.get(Random));

//BookListから、一度トップに置いた本を削除する
tempList.remove(Random);
}
}

//セッションに格納
req.getSession().setAttribute("list", BookList);

// リスト表示時は商品リスト画面へ
if(strSearch != null || strType != null)
req.getRequestDispatcher("../servlet/left.shop_control?link=4").forward(req, res);
else if(strSort != null) // 書籍管理画面へ
req.getRequestDispatcher("../servlet/left.shop_control?link=15").forward(req, res);

}

//index.html(トップページ)から、本や雑誌のリンクから来る
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws IOException, ServletException
{
doGet(req, res);
}
}

SQL コントロール

package left;

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

public class SqlControl
{
private static Connection conn = null; // DB接続を格納する変数
private static Statement stmt = null; // DB操作を行うステートメントを格納する変数
public static ResultSet ExecuteSelect(String sql)
{
return (ResultSet)Execute(sql);
}
public static int ExecuteUpdate(String sql)
{
return ((Integer)Execute(sql)).intValue();
}
public static Object Execute(String sql)
{
if(conn != null || stmt != null)
CloseDb();
Object objRet = null;
String driverName ="oracle.jdbc.OracleDriver"; // DBの名前
String url = "jdbc:oracle:thin:@school:1521:school"; // DBのアドレス
String user = "study"; // DB接続のユーザー名
String password = "study"; // DB接続のパスワード
try
{
// DBを操作するためのドライバクラスを初期化する(DB操作時のお約束処理)
Class.forName(driverName);
// DBに接続する(DB操作時のお約束処理)
conn = DriverManager.getConnection(url, user, password);
// DBを操作するステートメントを作成する(DB操作時のお約束処理)
stmt = conn.createStatement();
// 実行結果を戻り値に設定する
if(sql.startsWith("select"))
objRet = SqlExecuteQuery(stmt, sql);
else
objRet = SqlExecuteUpdate(stmt, sql);
}
catch(Exception e)
{
System.out.println("err");
}
return objRet;
}
public static void CloseDb()
{
// statementとconnectionを閉じる(DB操作時のお約束処理)
try
{
if(stmt != null)
{
stmt.close();
}
if(conn != null)
{
conn.close();
}
}
catch(Exception e)
{
}
}
//
// 関数名 : SqlExecuteQuery
// 機 能 : DBを参照する
// 引 数 : stmt = SQLを実行するステートメントクラス
// sql = SQLの実行文
// 戻り値 : なし
// 更新日 :
//
private static ResultSet SqlExecuteQuery(Statement stmt, String sql)
{
try
{
// SQLを実行
return stmt.executeQuery(sql);
}
catch(Exception e)
{
return null;
}
}
//
// 関数名 : SqlExecuteUpdate
// 機 能 : DBを更新する処理を実行する
// 引 数 : stmt = SQLを実行するステートメントクラス
// sql = SQLの実行文
// 戻り値 : なし
// 更新日 :
//
private static Integer SqlExecuteUpdate(Statement stmt, String sql)
{
try
{
// SQLを実行
return (Integer)stmt.executeUpdate(sql);
}
catch(Exception e)
{
return null;
}
}
}

2009年8月4日火曜日

0001 0002 0003 Part2

public static void main(String[] args) {
// TODO Auto-generated method stub

String[] kaito = new String[100];
for(int i = 0; i < 80; i++)
{
//System.out.printf("%05d", i);
String tmp = String.format("%04d", i);
kaito[i] = tmp;
System.out.println(kaito[i]);
}
}

0000 00001 00002 と表示

public class Test {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
for(int i = 0; i < 100; i++)
{
System.out.printf("%05d", i);
System.out.println("");
}
}

}

2009年8月3日月曜日

DBManager

package fw;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.*;


public class DBManager {
public static Connection getConnection() {
try {
Class.forName("org.hsqldb.jdbcDriver");
Connection con = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost", "sa", "");
return con;
} catch (Exception e) {
throw new IllegalStateException(e);
}
}


/**
* 更新SQLを発行し、結果をオブジェクトのListに入れて返す。
* ResultSetからListへの変換は、ResultSetBeanMappingが行う。
*/
public static int simpleUpdate(String sql) throws SQLException{
Connection con = null;
Statement smt = null;
try{
con = DBManager.getConnection();
smt = con.createStatement();
return smt.executeUpdate(sql);
}
finally{
if(smt != null){
try{
smt.close();
}
catch(SQLException ignore){
}
}
if(con != null){
try{
con.close();
}
catch(SQLException ignore){
}
}
}
}


/**
* 更新SQLを発行し、結果をオブジェクトのListに入れて返す。
* ResultSetからListへの変換は、ResultSetBeanMappingが行う。
*/
public static List simpleFind(String sql, ResultSetBeanMapping mapping)
throws SQLException{
Connection con = null;
Statement smt = null;
try{
con = DBManager.getConnection();
smt = con.createStatement();
ResultSet rs = smt.executeQuery(sql);
List list = new ArrayList();
int i = 0;
while(rs.next()){
Object bean = mapping.createFromResultSet(rs);
list.add(bean);

System.out.println(list.get(i) + " : DBManager");
i++;
}
return list;
}
finally{
if(smt != null){
try{
smt.close();
}
catch(SQLException ignore){
}
}
if(con != null){
try{
con.close();
}
catch(SQLException ignore){
}
}
}
}
}

ファイルの読み込み

package studyA;
import java.io.*;


public class A23_strArray extends A21_strArray
{
//ファイルからの読み込み
public void readFile(String filename) throws Exception
{
BufferedReader reader = new BufferedReader(new FileReader(filename));
String line;
while((line = reader.readLine()) != null)
{
test.add(line);
}

}

public void writeFile(String filename) throws Exception
{
try{

PrintWriter writer = new PrintWriter (new BufferedWriter(new FileWriter(filename)));
for(int i = 0; i < test.size(); i++)
{
writer.println(test.get(i));
}
//拡張forループで記述。した場合。
for(String name : test)
{
System.out.println(name);
}

writer.close();

}
catch(Exception e)
{
System.out.println(e);
}
}
}

//実行ファイル

package studyA;
import java.io.*;

public class A23_Exec {
public static void main(String[] args)
{
A23_strArray list = new A23_strArray();
list.add("aaa");
list.add("sss");
list.add("aaa");
list.add("sss");
list.add("aaa");
list.add("sss");
try{

list.readFile("kaito.txt");
list.writeFile("kaito.txt");

}
catch(Exception e)
{
System.out.println(e);
}

for(String name: list.test)
{
System.out.println("After adding data " + name);
}
}

}

2009年8月2日日曜日

JAVAカレンダー表示

//http://programnet.hp.infoseek.co.jp/practical/calendar.htmlを参考にした。
/* *
現在の日時をカレンダー表示し、日本語化する。
入力した月、日のその月の最大日数を計算する
*/

import java.util.*;
import java.text.*;


public class A18_HelloWorld {
public static void main(String args[]) {
Calendar cal = Calendar.getInstance();
SimpleDateFormat sm = new SimpleDateFormat("yyyy年MM月dd日hh時mm分");
System.out.println("現在の日付 1: " + sm.format(cal.getTime()));


String[] week = {"日","月","火","水","木","金","土"};
String[] ampm = {"午前","午後"};
int year = (int)cal.get(cal.YEAR);
int month = cal.get(cal.MONTH) + 1;
int day = cal.get(cal.DATE);
int dayOfWeek = cal.get(cal.DAY_OF_WEEK) - 1;
int w = cal.get(cal.AM_PM);
int hour = cal.get(cal.HOUR);
int minute = cal.get(cal.MINUTE);
int second = cal.get(cal.SECOND);
System.out.print("現在の日付 : ");
System.out.println(year + "年" + month + "月" +
day + "日 " + week[dayOfWeek] + "曜日");
System.out.print("現在の時刻 : ");

System.out.println(ampm[w] + " " + hour + "時" +minute + "分");

try{



int intSetYear = Integer.parseInt(args[0]);
int intSetMonth = Integer.parseInt(args[1]);


Calendar test = new GregorianCalendar(intSetYear,intSetMonth,0);
System.out.println(test.get(test.DAY_OF_MONTH));
}
catch(Exception e)
{
System.out.println("正しい数値を入力してください。システムを終了します。"+e);

}

}
}