dayがDBのDATE型のカラム名とする。
すると、rs.getDate("day")の内容は、2008-09-30のような形式となっている。
これを2008/09/30のような形式で表示させるには以下のようにする。
rs.getDate("day").toString().replaceAll("-", "/")
ここで、rsはResultSetである。
2008年9月30日火曜日
2008年9月28日日曜日
javaのResultSetからデータを取得する際の注意点
ResultSetからデータを取得する際の注意点を1つ挙げる。それは、
★ResultSetオブジェクトの指すカーソルは、一番最初は、sql文を実行して取得したデータセットの一行目の一つ前に置かれることになっているので、 nextメソッドの最初の呼び出しで、カーソルは一行目に置かれ、一行目がカレント行になる。
つまり、取得データの一行目を扱いたかったら、必ず初めにnext()メソッドを実行して次の行があるかどうかを判定し、それから一行目のデータを扱う必要がある。
コードで書けば以下のような感じ。
ResultSet rs = stmt.executeQuery("SELECT id FROM usertable");
if(rs.next){
String id = rs.getString("id");
}
★ResultSetオブジェクトの指すカーソルは、一番最初は、sql文を実行して取得したデータセットの一行目の一つ前に置かれることになっているので、 nextメソッドの最初の呼び出しで、カーソルは一行目に置かれ、一行目がカレント行になる。
つまり、取得データの一行目を扱いたかったら、必ず初めにnext()メソッドを実行して次の行があるかどうかを判定し、それから一行目のデータを扱う必要がある。
コードで書けば以下のような感じ。
ResultSet rs = stmt.executeQuery("SELECT id FROM usertable");
if(rs.next){
String id = rs.getString("id");
}
2008年9月27日土曜日
Javaで、日付・妥当性の厳密チェック
Javaで入力フォームから、yyyy/MM/ddのような日付入力(例:2008/08/23)を受けたとき、それが入力形式(yyyy/MM/dd)に合致しているかを厳密に調べるメソッドisDateFormat()の作成。
public static boolean validateMask(String aValue, String aMask) {
return GenericValidator.matchRegexp(aValue, aMask);
}
public static boolean isDateFormat(String aValue) {
//YYYY/MM/ddのチェック
if(!validateMask(aValue, "\\d{4}/\\d{2}/\\d{2}")){
return false;
}
DateFormat format = DateFormat.getDateInstance();
// 日付/時刻解析を厳密に行うかどうかを設定する。
format.setLenient(false);
try {
format.parse(aValue);
return true;
} catch (Exception e) {
return false;
}
}
public static boolean validateMask(String aValue, String aMask) {
return GenericValidator.matchRegexp(aValue, aMask);
}
public static boolean isDateFormat(String aValue) {
//YYYY/MM/ddのチェック
if(!validateMask(aValue, "\\d{4}/\\d{2}/\\d{2}")){
return false;
}
DateFormat format = DateFormat.getDateInstance();
// 日付/時刻解析を厳密に行うかどうかを設定する。
format.setLenient(false);
try {
format.parse(aValue);
return true;
} catch (Exception e) {
return false;
}
}
2008年9月25日木曜日
Javaで正規表現を用いるためのライブラリ
Javaで正規表現を使おうと思うと外部のライブラリを使う。
JakartaプロジェクトのOROというライブラリを使う。
OROはPerl互換の正規表現を提供するライブラリ。
このライブラリをビルドパスに追加しなければ、NoClassDefFoundErrorが発生する。
JakartaプロジェクトのOROというライブラリを使う。
OROはPerl互換の正規表現を提供するライブラリ。
このライブラリをビルドパスに追加しなければ、NoClassDefFoundErrorが発生する。
2008年9月22日月曜日
コネクションプーリングを用いたDBアクセス
環境
①JDBCドライバを
Tomcatインストールディレクトリ\Tomcat 5.5\common\lib
に配置する。
今回は
mysql-connector-java-5.1.6-bin.jar
を用いる。
***
当初、eclipseのWEB-INF/libに、このドライバをコピーするだけでドライバをロードできると思っていたが、それでは以下のような例外が発生して、ロードできない。
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot load JDBC driver class 'com.mysql.jdbc.Driver'
②以下の3つのファイルに設定を加える。
(i)WEB-INF/web.xml
<resource-ref>
<res-ref-name>jdbc/projectDB<res-ref-name>
<res-type>javax.sql.DataSource<res-type>
<res-auth>Container<res-auth>
<res-sharing-scope>Shareable<res-sharing-scope>
</resource-ref>
(ii)META-INF/context.xml
<Context docBase="projectPass" path="/projectPass">
<ResourceLink global="jdbc/projectDB" name="jdbc/projectDB"
type="javax.sql.DataSource" />
<Context>
***ここで、nameの値はWEB-INF/web.xmlのres-ref-nameと一致させる。また、globalもjdbc/projectDBにする。もしも、globalをprojectDBだけにしたら、以下の例外が発生する。
javax.naming.NameNotFoundException: 名前 projectDB はこのコンテキストにバインドされていません
(iii)tomcatのconfig/server.xml
<Resource auth="Container"
driverClassName="com.mysql.jdbc.Driver" name="jdbc/projectDB"
password="DBパスワード" type="javax.sql.DataSource"
url="jdbc:mysql://localhost/projectPass" username="DBユーザー名" />
***今回の場合、urlにはポート番号を加えたりしない。つまり以下のようにしたりしない。
url="jdbc:mysql://localhost:3306/projectPass"
---------------------------------------------------------------------
最後に。何か間違っていることをしていたら、コンソールにエラーメッセージが出力されるから基本的にそれを見て対処すること。また、最終的に戻るべきところはmysqlやtomcat、java APIなどのドキュメント。
言語 | java1.6 |
アプリケーションサーバ | Tomcat5.5 |
DB | mysql5.1.6 |
OS | Windows XP |
①JDBCドライバを
Tomcatインストールディレクトリ\Tomcat 5.5\common\lib
に配置する。
今回は
mysql-connector-java-5.1.6-bin.jar
を用いる。
***
当初、eclipseのWEB-INF/libに、このドライバをコピーするだけでドライバをロードできると思っていたが、それでは以下のような例外が発生して、ロードできない。
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot load JDBC driver class 'com.mysql.jdbc.Driver'
②以下の3つのファイルに設定を加える。
(i)WEB-INF/web.xml
<resource-ref>
<res-ref-name>jdbc/projectDB<res-ref-name>
<res-type>javax.sql.DataSource<res-type>
<res-auth>Container<res-auth>
<res-sharing-scope>Shareable<res-sharing-scope>
</resource-ref>
(ii)META-INF/context.xml
<Context docBase="projectPass" path="/projectPass">
<ResourceLink global="jdbc/projectDB" name="jdbc/projectDB"
type="javax.sql.DataSource" />
<Context>
***ここで、nameの値はWEB-INF/web.xmlのres-ref-nameと一致させる。また、globalもjdbc/projectDBにする。もしも、globalをprojectDBだけにしたら、以下の例外が発生する。
javax.naming.NameNotFoundException: 名前 projectDB はこのコンテキストにバインドされていません
(iii)tomcatのconfig/server.xml
<Resource auth="Container"
driverClassName="com.mysql.jdbc.Driver" name="jdbc/projectDB"
password="DBパスワード" type="javax.sql.DataSource"
url="jdbc:mysql://localhost/projectPass" username="DBユーザー名" />
***今回の場合、urlにはポート番号を加えたりしない。つまり以下のようにしたりしない。
url="jdbc:mysql://localhost:3306/projectPass"
---------------------------------------------------------------------
最後に。何か間違っていることをしていたら、コンソールにエラーメッセージが出力されるから基本的にそれを見て対処すること。また、最終的に戻るべきところはmysqlやtomcat、java APIなどのドキュメント。
2008年9月13日土曜日
mysqlを使って、ユーザー作成からテーブル作成までを行う
①インストールが完了したら、以下のコマンドを入力してrootでログインする。
C:\> mysql -u root -p
②ユーザーを登録する。
ユーザーIDがuser、パスワードがpasswordというユーザーに全てのテーブルに対して、全ての権限を与えて登録する場合は以下のようにする。
mysql> GRANT ALL ON *.* TO user@localhost IDENTIFIED BY 'password';
③次にデータベースを作成する。
user_dbという名前のデータベースを作成する場合は以下のようにする。
mysql> CREATE DATABASE user_db;
データベースが作成されたかどうかは、
mysql> SHOW DATABASES;
として確認できる。
**
因みに、データベースの削除は
mysql> DROP DATABASE user_db;
とすればよい。
④テーブルの作成
データベースの中にテーブルを作成するには以下のようにする。
まず、テーブルを作成したいデータベース(ここではuser_dbとする)に接続する。
mysql> USE user_db;
続いて、データベースを作成するためにCREATE TABLEを実行する。
mysql> CREATE TABLE user_table(id INTEGER NOT NULL, password VARCHAR(30), PRIMARY KEY(id));
のようにすればよい。
⑤テーブルが正しく作成されたかどうかの確認
mysql > show fields from user_db;
C:\> mysql -u root -p
②ユーザーを登録する。
ユーザーIDがuser、パスワードがpasswordというユーザーに全てのテーブルに対して、全ての権限を与えて登録する場合は以下のようにする。
mysql> GRANT ALL ON *.* TO user@localhost IDENTIFIED BY 'password';
③次にデータベースを作成する。
user_dbという名前のデータベースを作成する場合は以下のようにする。
mysql> CREATE DATABASE user_db;
データベースが作成されたかどうかは、
mysql> SHOW DATABASES;
として確認できる。
**
因みに、データベースの削除は
mysql> DROP DATABASE user_db;
とすればよい。
④テーブルの作成
データベースの中にテーブルを作成するには以下のようにする。
まず、テーブルを作成したいデータベース(ここではuser_dbとする)に接続する。
mysql> USE user_db;
続いて、データベースを作成するためにCREATE TABLEを実行する。
mysql> CREATE TABLE user_table(id INTEGER NOT NULL, password VARCHAR(30), PRIMARY KEY(id));
のようにすればよい。
⑤テーブルが正しく作成されたかどうかの確認
mysql > show fields from user_db;
登録:
投稿 (Atom)