- PR -

swingとデータベースについて

1
投稿者投稿内容
未記入
会議室デビュー日: 2005/07/17
投稿数: 3
投稿日時: 2005-07-17 20:29
使っているデータベースはmysqlですが
swingのフレームの画面上から、
データベースのデータの削除や追加ができると
思うのですが、どのようにしたらよいかわかりません

コンボボックスで削除ボタンを押すと
データベースに入っているデータの一行すべてが削除される。
テキストフィールドに入力し入力し追加ボタンを
押すとデータベースの行が追加される。
以上のことがやってみたのですが、
データベースは使ったことがあるのですが
javaはほとんど初心者です。。。。
サンプルが見つけられなかったので質問します。
下の自分で入力したものも全く違うかも
しれませんがどなたかお願いします。

create table database(
id int auto_increment primary key,
name varchar(400),
mail varchar(400)
);
insert into database values(null,'???????','?????????');

private Connection connect() throws Exception{
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost/?useUnicode=true&characterEncoding=MS932";
String user = "root";
String pass = "";
Connection con = DriverManager.getConnection(url,user,pass);
return con;
}

try{
Connection con = connect();
Statement stmt = con.createStatement();
String sql ="select name from database";
ResultSet rs = stmt.executeQuery(sql);
DefaultComboBoxModel Model = new DefaultComboBoxModel();
while(rs.next()){
String name = rs.getString("name");
comboModel.addElement(name);
}
ComboBox = new JComboBox(Model);
con.close();
} catch(Exception ex) {
System.out.println(ex);
}
}


これでコンボボックスにデータベースのデータの
表示まではできます。削除ボタンを
配置したのですがどうやって削除できるのかわかりません?
あとテキストフィールドを作り追加ボタンを
置きデータの追加をしたいのですが。

public void actionPerformed(ActionEvent e){

JButton removeButton = new JButton("Remove");
removeButton.addActionListener(this);
removeButton.setActionCommand("Del");

try{
Connection con = connect();
Statement stmt = con.createStatement();
String sql ="delete from Browser where name = '" ??????
ResultSet rs = stmt.executeQuery(sql);

int id = rs.getInt("id");
String name = rs.getString("name");
String address = rs.getString("mail");

while(rs.next()){

}
}
con.close();
} catch(Exception ex) {
System.out.println(ex);
}
}
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-07-18 00:57
・ボタンを押したら特定の処理を実行する実装
・レコードを削除する実装
どちらがうまくできないのでしょうか?
るぱん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 1370
投稿日時: 2005-07-18 01:25
アーキテクト的にどうかって言う事でしょうか?

取り合えず作ってみたものの、
それが正しい実装の仕方なのかどうか判断に迷う
・・・と言うことでしょうか?
_________________
未記入
会議室デビュー日: 2005/07/17
投稿数: 3
投稿日時: 2005-07-18 01:49
・ボタンを押したら特定の処理を実行する実装
・レコードを削除する実装

どちらもうまくいってないです。
同じようなswingとmysqlを使ってサンプル作っているサイト探してはみたんですが
見つからず。。。。
とりあえずコンボボックスにデータベースに登録している"name”の
データが表示されボタンを配置するところまでなんとかswingサイトとか
参考に作ったのですが、ここから先がちょっとどう記述すればよいか
全く解かってない状況です(すみません)

Youss
会議室デビュー日: 2005/07/18
投稿数: 1
投稿日時: 2005-07-18 07:56
こんにちは。

selectの表示は出来るのならば、他のSQL の発行の仕方とメソッドの戻り値を理解できればよいのじゃないでしょうか。
検索上位のページなので、すでに見ているかもしれませんが、下記のサイトはいかがでしょう。

http://ueno.cool.ne.jp/shirokaze185/java-jdbc.html#insert
/** ビデオ情報を削除 */ の部分。
未記入
会議室デビュー日: 2005/07/17
投稿数: 3
投稿日時: 2005-07-18 12:41
自分で作ってみたのですが、コンパイルは通るのですが
削除したいデータを
コンボボックスで選択又はボタンを押すと

java.sql.SQLException: Can not issue data manipulation statements with executeQu
ery().

といったエラーが出てます。
もしかしたら全く違うことをしているのでしょうか?
データも削除されていませんし。。。



public void actionPerformed(ActionEvent e){
String action = e.getActionCommand();

try{

Connection con = connect();
Statement stmt = con.createStatement();
String sql ="delete from database where name = '" + ComboBox.getSelectedItem() + "'";
ResultSet rs = stmt.executeQuery(sql);

String name = rs.getString("name");

while(rs.next()){

if (action.equals("Del")){

ComboBox.removeItem(rs.getString("name"));

}
}

con.close();
} catch(Exception ex) {
System.out.println(ex);
}
}
YOU@IT
ぬし
会議室デビュー日: 2002/03/29
投稿数: 284
お住まい・勤務地: 大阪
投稿日時: 2005-07-18 12:54

J2SE API のStatementクラス、#executeQuery()、#executeUpdate()の説明を
参照して下さい。
誤りがわかると思います。

http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/sql/Statement.html
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-07-18 14:07
まずは "Swingで"ってのを忘れてCUIのアプリケーションを作ってみましょう。
それからSwing上に実装してみないと、何が出来て何ができないのか切り分けられません。
1

スキルアップ/キャリアアップ(JOB@IT)