• 締切済み

executeUpdateで変数を二つ読み込めるのでしょうか?

String str ="DELETE FROM table1 where id="+bean.getid()+" and pass="+inbean.getpass();を実行すると com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'pass' in 'where clause' String string ="DELETE FROM table1 where id="+inbean.getid()+" and pass='"+inbean.getpass()+"';";を実行すると Unknown column 'pass' in 'where clause' となります。 st.executeUpdate(str)だと変数1つしかよみこめないのでしょうか。 st.executeQueryを使うべきなのですか? 分かる方がいましたらよろしくお願いします。

みんなの回答

  • root139
  • ベストアンサー率60% (488/809)
回答No.1

エラーメッセージを素直に受取ると、SQLの構文エラーでWHERE句に未知のカラム(列)「pass」が有るとのことですよね。 まずは、table1 に「pass」というカラム(列)が在るか確認されるのが良いかと。

qqtaka
質問者

お礼

アドバイス有難うございます。 変数を二つ入れるとしようできませんでした。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • EclipseでMySQLにDELETE文を二つまとめて送れない

    環境 WindowsXP Eclipse3.4 MySQL5.1 Server str="DELETE FROM table1 where id=28;DELETE FROM table2 where id=28";という文を実行したのですが 動作しなくて困っています。分かる方がいましたら教えてください。 よろしくお願いします。 st.executeUpdate(str);を利用し、DELETE文ひとつの場合は実行できました。 MySQLServerに直接入力しても実行できました。 しかしEclipseから読み込んで実行すると com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELETE FROM table2 where id=28' at line 1 というエラーがでてわかりません。 分かる方がいましたらよろしくお願いします。

    • ベストアンサー
    • Java
  • ERROR 1054 (42S22) 原因不明です

    idはintでプライマリー a5はchar(10)で日本語文字列を格納 データを取得しようとすると#1054エラーがでます。 admin-------- SELECT * FROM `aaa` WHERE `a5`=`あいうえおかき` #1054 - Unknown column 'ã moniter-------- mysql> SELECT * FROM `aaa` WHERE `a5`=`あいうえおかき`; ERROR 1054 (42S22): Unknown column '縺ゅ>縺・∴縺翫°縺・ in 'where clause' `あいうえおかき`の日本語に問題があると思い半角データを1行だけ更新しました。 admin-------- SELECT * FROM `aaa` WHERE `a5`=`abcde` #1054 - Unknown column 'abcde' in 'where clause' moniter-------- mysql> SELECT * FROM `aaa` WHERE `a5`=`abcde`; ERROR 1054 (42S22): Unknown column 'abcde' in 'where clause' admin-------- moniter-------- SELECT * FROM `aaa` WHERE `a5` SELECT `a5` FROM `aaa` WHERE 1 SELECT * FROM `aaa` WHERE `id`=89584 成功

    • ベストアンサー
    • MySQL
  • DELETE文とロックについて

    DELETEしようとしているレコードがロックされている場合は、削除せず すぐに処理を戻したいです。イメージ的にNOWAITが最適と思い →DELETE FROM テーブルA WHERE カラムA = 'A' NOWAIT としたいところですが、NOWAITはSELECT文でしか指定できないとのことなのでNGです。 SELECT文で抽出した条件のレコードを削除する場合 →DELETE FROM テーブルA WHERE カラムA =      (SELECT カラムA FROM テーブルA WHERE カラムA = 'A') と出来ます。 又、SELECT文でロック待機時間なしの場合 →SELECT カラムA FROM テーブルA WHERE カラムA = 'A' FOR UPDATE NOWAIT と出来ます。 これらを組み合わせて、ロックされているレコードを削除しようとした場合、 すぐにNGで制御を戻すように、次のように記載してみました。 →DELETE FROM テーブルA WHERE カラムA =    (SELECT カラムA FROM テーブルA WHERE カラムA = 'A' FOR UPDATE NOWAIT) なぜかNGになってしまいます(右カッコがありませんと言われます)。 なぜこの書き方が出来ないのでしょうか? 現在、一度該当のレコードをSELECT文でFOR UPDATE NOWAITをしてから DELETEをしています。 1つレコードを削除したいだけなのに、わざわざSELECT文と DELETE文を発行してしまっています。 こういう場合、他にどのような方法があるのでしょうか? 宜しくお願いします。

  • betweenで境界値が取得できない。

    連番の歯抜け値を取得するSQLを作りたいと思っています。 例えば、カラムAに、1,2,3,5,6,7,9,10(4と8が抜けている) と数値の入っているテーブルAがあるとします。 これに対して、 SELECT MIN(カラムA + 1) FROM テーブルA WHERE (カラムA + 1) NOT IN (SELECT カラムA FROM テーブルA) とSQLを投げた場合、4が取得できます。 これにbetween句を付与したいのですが、そうすると境界値が なぜか取れなくて困ってます。 具体的には、 SELECT MIN(カラムA + 1) FROM テーブルA WHERE (カラムA + 1) NOT IN (SELECT カラムA FROM テーブルA) AND BETWEEN 8 AND 10 とした場合、NULLが返ってきてしまいます。 普通、BETWEENは境界値も対象になるはずですが、何故このような 結果になってしまうのでしょうか? 修正点をご教授いただけないでしょうか? 宜しくお願いします。

  • php mysql で WHERE句内に変数を入れる方法を教えてください。

    php初心者です。 お世話にになります。 id  content 1  テキスト1 2  テキスト2 3  テキスト3 4  テキスト4 5  テキスト5 上記のようなデータベースです。 下記の文で5行目のテキストを抽出する事は出来ています。 $query = 'SELECT * FROM tbl_batsu WHERE id = 5'; ランダム整数を生成し、5つの中から一つランダムにデータを抽出したいと考えています。 $num = rand(1, 5); $query = 'SELECT * FROM tbl_batsu WHERE id = $num'; 上記ですとエラーが出てしまいます。 Query failed: Unknown column '$num' in 'where clause' そんなカラムはありませんという意味だとは思いますが・・・ 初心者なもので的外れな質問になっているかも知れませんが、解決策が分かる方は是非ご教授頂ければありがたいです。 よろしくお願いします。

    • 締切済み
    • PHP
  • beansの作成方法

    データベースと連携したwebアプリケーションを作っているのですが、各JAVAファイルのソース中にあるデータベースとの接続部分をbeans化しろと言われました。 String url="jdbc:postgresql://localhost/#######/"; String user="#######"; String pass="****"; Class.forName("org.postgresql.Driver"); Connection con=DriverManager.getConnection(url,user,pass); Statement stm=con.createStatement(); →String sql="delete from a_table where id='"+id+"'"; →int num=stm.executeUpdate(sql); stm.close(); con.close();  →の部分は各ファイルによって若干異なるのですが・・・いまいちbeansというものをよく理解しておらず、単純に上の6行だけ別ファイルで作ってインポートしてもうまくいきません。コンパイルでシンボルを解決できませんと言われてしまいます。もちろん、直接各ファイル内に上の構文を書けば動くのですが・・・。  この場合、beansってどういう風に書けば、また読み込ませればいいんでしょうか?

    • ベストアンサー
    • Java
  • ユーザ管理システムについて・・・

    現在、登録したユーザアカウントのIDとパスワードを利用してログイン出来るシステムを作成しようとしています。 おそらく「JSP」と「ControllerServlet.java」部分は問題ないと思うのですが「ModelBean.java」に何か問題はあるのでしょうか? <ModelBean.java>は // パッケージの宣言 package myPackage; import java.sql.*; public class ModelBean implements java.io.Serializable{ // privateなプロパティの宣言 private String id; private String pass; private String name; private String aflg; private String process; private String processMessage; private Connection con; private Statement stmt; private String url = "jdbc:mysql://localhost/shopping_db?useUnicode=true&characterEncoding=Shift_JIS"; private String user = "root"; private String password = "123"; private String query = ""; // JavaBeansのコンストラクタの宣言 public ModelBean(){id=""; pass=""; name=""; aflg=""; process="0";} // IDを取得する処理 public String getId(){ return id; } // パスワードを取得する処理 public String getPass(){ return pass; } //名前を取得する処理 public String getName(){ return name; } //アクセス権限を取得する処理 public String getAflg(){ return aflg; } // 処理内容を取得する処理 public String getProcess(){ if (process.equals("2")){ processMessage = "データを登録しました";} else if(process.equals("3")){ processMessage = "下記データを更新しました";} else if(process.equals("4")){ processMessage = "下記データを削除しました";} else if(process.equals("1")){ processMessage = "ユーザーの一覧を表示しました";} else { processMessage = "データ表示画面";}//初期画面 System.out.println("process="+process); System.out.println("processMessage="+processMessage); return processMessage; } public void setProcess(String getProcess){ this.process = getProcess; } // DB接続処理 private void jdbcOpen(){ try{ // JDBCドライバをロードする Class.forName("org.gjt.mm.mysql.Driver"); // DB接続(ODBCデータソースの指定) System.out.println("url="+url); System.out.println("user="+user); System.out.println("password="+password); con = DriverManager.getConnection(url,user,password); stmt = con.createStatement(); } catch (Exception ex) { ex.printStackTrace ();} } // DBクローズ処理 private void jdbcClose(){ try{ stmt.close(); con.close(); } catch (Exception ex) { ex.printStackTrace ();} } // データ読み取り処理 public void selectDatas(String getId) { this.id=getId; jdbcOpen(); try{ // SQL文生成 query = "SELECT * FROM loginuser WHERE id="+id; System.out.println("select query"+query); // 実行 ResultSet rs = stmt.executeQuery(query); // 結果取得 rs.next(); id = rs.getString("id"); pass = rs.getString("pass"); name = rs.getString("name"); aflg = rs.getString("aflg"); rs.close(); } catch (Exception ex) { ex.printStackTrace ();} jdbcClose(); } //新規データ追加処理 public void addDatas(String getId, String getPass, String getName, String getAflg){ this.id=getId; this.pass=getPass; this.name=getName; this.aflg=getAflg; jdbcOpen(); try{ //------------------- // 登録処理 //------------------- // SQL文生成(登録) query = "INSERT INTO loginuser (id, pass, name, aflg) VALUES("+id+", '"+pass+"', '"+name+"', '"+aflg+"') "; // 実行 int flgUpdated = stmt.executeUpdate(query); } catch (Exception ex) { ex.printStackTrace ();} jdbcClose(); } 登録実行部分のプログラムのどこを変えたら動くようになるでしょうか?よろしくお願いします。

  • Java PostgreSQL スクリプトレット

    スクリプトレットを使用し、ログイン画面を作成しようと考えています。 <%@ page import="java.io.*,javax.servlet.*,javax.servlet.http.*,java.net.*,java.sql.*" %> <% request.setCharacterEncoding("Shift_JIS"); String id = (String)request.getParameter("id"); String pass = (String)request.getParameter("pass"); String drv = "org.postgresql.Driver"; String dsn = "jdbc:postgresql://localhost:5432/?user=postgres&password=aipo"; String sql = "SELECT * FROM TURBINE_USER"; Connection cn = DriverManager.getConnection(dsn); Statement st = cn.createStatement(); ResultSet rs = st.executeQuery(sql); while (rs.next()) { out.println("<P>" + rs.getString(1) + "</P>"); } rs.close(); st.close(); cn.close(); %> 上記を実行すると org.apache.jasper.JasperException: Exception in JSP: /get.jsp:18 となり、 ResultSet rs = st.executeQuery(sql); の時点でエラーとなります。 Statement st = cn.createStatement(); まで正常に動作するのは確認済みです。 類似する質問に http://oshiete1.goo.ne.jp/qa3522131.html がありましたが、解決できませんでした。 どこが間違っていますでしょうか。

  • mysqldumpのwhereテーブル指定について

    約1億レコードあるテーブルをWhere条件で絞ってダンプしたいのですが、下記方法でダンプすると、DBのすべてのテーブルに対応してしまう為、エラーとなってしまします。 Where条件設定時に、テーブルを指定する事は可能でしょうか? OS:CentOS6.7(64Bit) Mysql Ver:5.1.73(yumインストール) テーブル構成 テーブル名:systemevents ID : int(10) DeviceTime:datetime FromHost: varchar(60) Message:txet ◎絞り込み条件 mysqldump -uroot -p --where 'DeviceTime between '開始日' And '終了日' and FromHost Like '%ホスト名%'' 上記を実行すると、syslog以外のテーブルにも実行されるようで、下記エラーが表示されます。 mysqldump: Couldn't execute 'SELECT /*!40001 SQL_NO_CACHE */ * FROM `SystemEventsProperties` WHERE DeviceTime between 2015/08/01 and 2015/08/31': Unknown column 'DeviceTime' in 'where clause' (1054) where 条件指定じに、テーブルを指定する事は出来ないか? mysqldumpのほかに、DB構造を含めたデータを出力する方法はないか? いずれかの方法をお教え頂けましたら幸いです。

  • select文、asで定義した桁をwhereで使用可能?

    SELECT ( IF(substring(p.TDATE,1,6) = '200407' ,p.PRICE,999999999) ) as 'MONTH1' from TBL_PRICE p where MONTH1<999999999 ; ↑こんな感じで使いたいのですが、これはエラーに なります(これをそのまんま使用するわけではないので、 このSQL自体へのツッコミはとりあえずいいです) >ERROR 1054: Unknown column 'MONTH1' in 'where clause' asで定義した桁をwhereで使用することはできますか?

    • ベストアンサー
    • MySQL
EP-881ANプリンターのエラー
このQ&Aのポイント
  • EP-881ANプリンターでメインテナンスエラーが発生し、カートリッジが認識できません
  • EP-881ANプリンターがメインテナンスエラーを表示し、カートリッジの認識に問題があります
  • EP-881ANプリンターがエラーを発生し、カートリッジの認識ができません
回答を見る