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