プロが教える店舗&オフィスのセキュリティ対策術

下記のコードはSQLにテーブルを作成し、データを登録するコードですが
コードを少し足すことで、ついでにIDを自動的に割り振る方法はあるのでしょうか?

import java.sql.*;

public class Sample1
{
public static void main(String args[])
{
try{
//接続の準備
String url = "jdbc:derby:cardb;create=true";
String usr = "";
String pw = "";

//データベースへの接続
Connection cn = DriverManager.getConnection(url, usr, pw);

//問い合わせの準備
DatabaseMetaData dm = cn.getMetaData();
ResultSet tb = dm.getTables(null, null, "車表", null);

Statement st = cn.createStatement();

String qry1 = "CREATE TABLE 車表(番号 int, 名前 varchar(50))";
String[] qry2 = {"INSERT INTO 車表 VALUES ('伊藤', '男性')",
"INSERT INTO 車表 VALUES ('佐藤', '女性')",
"INSERT INTO 車表 VALUES ('山田', '男性')"};
String qry3 = "SELECT * FROM 車表";

if(!tb.next()){
st.executeUpdate(qry1);
for(int i=0; i<qry2.length; i++){
st.executeUpdate(qry2[i]);
}
}

//問い合わせ
ResultSet rs = st.executeQuery(qry3);

//データの取得
ResultSetMetaData rm = rs.getMetaData();
int cnum = rm.getColumnCount();
while(rs.next()){
for(int i=1; i<=cnum; i++){
System.out.print(rm.getColumnName(i) + ":"+ rs.getObject(i) + " ");
}
System.out.println("");
}

//接続のクローズ
rs.close();
st.close();
cn.close();
}
catch(Exception e){
e.printStackTrace();
}
}

000001 伊藤 男性
000002 佐藤 女性
000003 山田 男性

A 回答 (1件)

Javaではなく、


SQLデータベース側の機能に頼る(SQLサーバが連番管理する)のが一般的です。

ところが上記の連番管理機能は、
データベース製品毎にSQL構文や機能が異なり注意が必要。

例えば、一番簡単なMySQLの場合、
番号カラムにauto_increment属性を付けるだけです。
http://dev.mysql.com/doc/refman/4.1/ja/example-a …
    • good
    • 0
この回答へのお礼

丁寧な回答有難うございます。ちょっと試してみます。

お礼日時:2013/09/22 00:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています