- PR -

SQLへの命令

投稿者投稿内容
hiro
会議室デビュー日: 2004/06/17
投稿数: 13
投稿日時: 2004-06-28 19:29
mysqlに命令をif、elseを使って送りたいのですが、うまくいきません。
ifに関しては問題ないのですが、ifに一致しない場合、何もしないという命令を送る(送るというか何もさせたくない)のですがどうすればよいのでしょうか?
いろいろ試したのですがエラーが出てしまします。
int iを返したいのです。
よろしくお願いします。


if (rs.next()) {
sql="SELECT * FROM TABLE WHERE ID='" + id + "'";
}
else{
何もしない。
(この部分がわからないです・・・)
}
int i = stmt.executeUpdate(sql);
return i;


[ メッセージ編集済み 編集者: hiro 編集日時 2004-06-28 19:40 ]
Cluster
ぬし
会議室デビュー日: 2003/03/06
投稿数: 289
お住まい・勤務地: 大阪
投稿日時: 2004-06-28 19:50
何もしなかった場合、iに何をセットして返したいのですか?
hiro
会議室デビュー日: 2004/06/17
投稿数: 13
投稿日時: 2004-06-28 19:57
何もさせないようにしたいのです。
if文以外なら何もしないようにしたいのです。例えばelseにsql=" ";やsql=nullなどを入れると、何もしないとなるかと思ったのですが、エラーが起きてしまうのです。
ifに一致したら、sqlを操作。不一致なら何もしないというものを作りたいのです。

説明が悪くてすみません。。
Cluster
ぬし
会議室デビュー日: 2003/03/06
投稿数: 289
お住まい・勤務地: 大阪
投稿日時: 2004-06-28 20:08
何もしたくないのは分かるんですが、
メソッドの定義上(多分、public int xxxxx() とか宣言してるでしょう?)、
メソッドの呼び出し元にint型の値を返さなくてはいけませんので、
「何を返したいのか?」と聞いたのですが。

仮に、「elseの場合には 0 を返す」という仕様なら、こうなります。

コード:
int i = 0;
if (rs.next()) { 
  sql="SELECT * FROM TABLE WHERE ID='" + id + "'"; 
  i = stmt.executeUpdate(sql); 
} else{ 
  i = 0; // ←これは無くても一緒(分かりやすいように書いてます) 
} 
return i; 


※ 元のコードだと、if文の外でstmt.executeUpdateを実行しようとしてるのに無理があります。
七味唐辛子
ぬし
会議室デビュー日: 2001/12/25
投稿数: 660
投稿日時: 2004-06-28 20:46
単純にプログラムの作り方が悪いだけでは、 
Cluster
ぬし
会議室デビュー日: 2003/03/06
投稿数: 289
お住まい・勤務地: 大阪
投稿日時: 2004-06-28 21:06
身も蓋も無いことを・・・
タラン
大ベテラン
会議室デビュー日: 2004/03/17
投稿数: 138
投稿日時: 2004-06-29 09:33

int i = 0;
if (rs.next()) {
sql="SELECT * FROM TABLE WHERE ID='" + id + "'";
i = stmt.executeUpdate(sql);
} else{
i = 0;
}
return i;

ちょっと気になるのはSELECT文も executeUpdateを使えますか?
SELECTの結果はResultSetだと思っていますが

何がしたいロジッグかが全然判りませんね。

私も早く知りたくて質問する時こんな感じが多いですが

逆に時間がかかってしまったりしますね。




taku
ぬし
会議室デビュー日: 2002/11/12
投稿数: 918
お住まい・勤務地: 墨田区→中野区
投稿日時: 2004-06-29 09:52
引用:

MUSEさんの書き込み (2004-06-29 09:33) より:

int i = 0;
if (rs.next()) {
sql="SELECT * FROM TABLE WHERE ID='" + id + "'";
i = stmt.executeUpdate(sql);
} else{
i = 0;
}
return i;

ちょっと気になるのはSELECT文も executeUpdateを使えますか?
SELECTの結果はResultSetだと思っていますが



***************サンのAPIより抜粋******************
executeUpdate
public int executeUpdate(String sql)
throws SQLException指定された SQL 文を実行します。
SQL 文は、INSERT 文、UPDATE 文、DELETE 文、
または SQL DDL 文のような何も返さない SQL 文の場合があります。

パラメータ:
sql - SQL INSERT 文、UPDATE 文、または DELETE 文、あるいは何も返さない SQL 文
戻り値:
INSERT 文、UPDATE 文、DELETE 文の場合は行数。何も返さない SQL 文の場合は 0
例外:
SQLException - データベースアクセスエラーが発生した場合、
       または指定された SQL 文が ResultSet オブジェクトを生成する場合
*******************************************
 APIを見るか、実行してみれば解る気が・・・。

[ メッセージ編集済み 編集者: taku 編集日時 2004-06-29 09:53 ]

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