• ベストアンサー

JDBCでの入力法

MySQLを使用したJDBCでINSERT文を発行しても値がすべて0が入力されてしまいます。 "INSERT INTO tousen_no(ckai,tno1,tno2,tno3,tno4,tno5,tno6,bno)"+"VALUES('kaisu','no1','no2','no3','no4','no5','no6','no7')"; 列、変数は全てint型です。 どなたか理由と改善方法を教えてください。

  • Java
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.1

こんにちは。 kaisuやno1が文字列として判別されているのではないでしょうか? String sql = "VALUES ( 'no1' )"; としても内容は VALUES ( 'no1' )になってしまいます。 (no1はただの文字列) String sql = "VALUES ( '" + no1 + "' )"; こうすることによりno1が変数として扱われると思います。

simfjava
質問者

お礼

こんばんは、LancerVIIさん。 変更してやってみたらうまくいきました。 アドバイスありがとうございました。

関連するQ&A

  • JDBCでのinsertについて

    JDBCを使ってDBを扱います。 データベースはPostgresqlです。 Servlet+JSP+Beanで開発しているのですが、 以下のようなinsert処理をBeanで行っています。 String sql_insert = "INSERT INTO tal_ks(cd,kbn)" + " VALUES(" + vl1 + ",'" + vl2 + "')";System.out.println(sql_insert); System.out.println("SQL文発行"); int in = stmt.executeUpdate(sql_insert); System.out.println("(SQL文発行後"); ・ ・ ・ これを行うと、例外処理には流れず 実行したかのように見えるんですが、 実際はデータがはいっておりません。 このSQLと同じものをpsqlで直接実行すると insert できました。 これは、どういうことが原因なのでしょうか? 教えていただきたいです。

    • ベストアンサー
    • Java
  • 一括でINSERTする方法(PL/SQL)

    PL/SQLを利用して、下記3つのSQLを一括でinsertしたいと思います。 (値は、任意でありません。) PL/SQLに関して、初心者なので、どのように記述してよいか 分かりません。 サンプル的なソースを用いて解説して頂けるとありがたいです。 (1)INSERT INTO tb1(列1, 列2) VALUES('値1','値2') (2)INSERT INTO tb1(列1, 列2) VALUES('値3','値4') (3)INSERT INTO tb1(列1, 列2) VALUES('値5','値6')

  • postgreSQLでint8で設定された項目にデータを挿入したいのですが、教えて下さい。

    例えば、下記のようなテーブルを作成し、 create table testm ( data1 int8, data2 int8, data3 int8 ); 普通全ての項目に値があれば、1行挿入することができますが、 insert into testm values (1, 2, 3); もし、値がないのに、項目に挿入したい場合は、できるのでしょうか? insert into testm values (1, , 3); 教えて下さい。それが出来なかった場合の対処方法も教えて下さい。

  • PHP/MySQL INSERT文について。

    PHP/MySQL INSERT文について。 こんばんは。 PHP・MySQLでデータベースへデータの書き込みを試行錯誤しております。 そこで一つどうしても解決出来ない問題(謎)があるので質問させて頂きます。 簡易的な質問内容としては 全てのカラムに対する値の挿入は可能なのに カラムを指定して値を挿入しようとしたらエラーが出ます。 データベースの設定はテーブル名【TESTtable】 フィールド 種別 NULL 属性/その他 AAA int(6) No UNSIGNED ZEROFILL / auto_increment BBB int(4) Yes CCC int(4) Yes DDD int(4) Yes PHPでのSQL実行文をしてはの記述としては(値は全て可変で数値を代入します。) INSERT INTO TESTtable VALUES (last_insert_id(),50,600,50) とした場合は問題無くテーブルに書き込みされますが カラムを指定して INSERT INTO TESTtable (AAA,BBB,CCC,DDD) VALUES (last_insert_id(),50,600,50) とした場合、書き込みが行われません。 INSERT INTO TESTtable ('AAA','BBB','CCC','DDD') VALUES (last_insert_id(),50,600,50) INSERT INTO TESTtable (AAA,'BBB','CCC','DDD') VALUES (last_insert_id(),50,600,50) INSERT INTO TESTtable ('AAA','BBB','CCC','DDD') VALUES (last_insert_id(),'50','600','50') 等、色々試してみましたが不可能でした。 カラムAAAはauto_incrementにりますので毎回書き込みされますが BBB、CCC、DDDは書き込みが不要の場合もあるので カラム指定の書き込みは必須となるのですが・・・行き詰ってしまいました・・・。 ご教授頂ければ幸いです。 どうぞ、宜しくお願い致します。

    • ベストアンサー
    • MySQL
  • MySQLから取り出したものを3つに分ける

    MySQLに以下のようなSQLを打ちました。 create table table_list( id int, task varchar(255) ); insert into table_list values(1,'ほげほげ1-1'); insert into table_list values(1,'ほげほげ1-2'); insert into table_list values(2,'ほげほげ2-1); insert into table_list values(2,'ほげほげ2-2'); insert into table_list values(3,'ほげほげ3-1'); そして、空のdiv要素が3つあります。 このデータベースからidの数値別に、div要素へtaskの文字列を入れたいのですが、どうすればいいのでしょうか? SQLで「select * from table_list」をやってからtaskを取り出すのか、3回SQLで「select task from table_list where id=1」のようにするのがよろしいんでしょうか?

    • ベストアンサー
    • PHP
  • JDBCを使ってdate型へのINSERTはできますか?

    JDBCを使ってOracleへ接続し、DBへデータを挿入したいのですが、 日付型のデータがどうしてもうまく挿入できません。 jsp + Servlet + Bean で開発しています。 使っているテーブルは CREATE TABLE USERS (     USERID     VARCHAR2(10) NOT NULL,     PASSWORD  VARCHAR2(10) NOT NULL,     NAME      VARCHAR2(50) NULL,     SEX       VARCHAR2(5)  NULL,     BIRTHDAY   DATE       NULL,     PRIMARY KEY (USERID, PASSWORD) ) という風な型で、定義しています。 DBへのINSERT処理は、Beanで行っています。 以下のINSERT文を実行したのですが、うまくINSERTできませんでした。 String sqlQuery = "INSERT INTO USERS (USERID, PASSWORD, NAME, SEX, BIRTHDAY)" + "VALUES ('use', 'pass', 'ナマエ', '女性', '1980/06/05')" int numOfUpdate = statement.executeUpdate(sqlQuery); ちなみに、この中のdate型で定義している「BIRTHDAY」を除いたINSERT文 String sqlQuery = "INSERT INTO USERS (USERID, PASSWORD, NAME, SEX)" + "VALUES ('use', 'pass', 'ナマエ', '女性')" int numOfUpdate = statement.executeUpdate(sqlQuery); だとうまくINSERTできます。 sql*plusを使って直に書くと、両方うまくINSERTできました。 ●その後に、「BIRTHDAY」をdate型からVARCHAR2(10)へ定義し直し、  DBを作り直して実行した所、うまくINSERTできるようになりました。 なぜ「date型」だとINSERTできず、「VARCHAR2型」だとINSERTできるのか、 知っている方がおられましたら、ぜひ教えて頂きたいです。

    • ベストアンサー
    • Java
  • 複雑なクエリ

    最近の連続失敗回数が3回の登録番号を求めるクエリがわかりません。 教えてください。 DBは、MySQL version: 4.0.22で、副問合せ等は使用できません。 create table t_test( n_no integer,-- 登録番号 n_flg integer,-- 0:成功1:失敗 d_update date-- 更新日付 ); insert into t_test (n_no, n_flg, d_update)values (1,0,'2007-06-01'); insert into t_test (n_no, n_flg, d_update)values (1,0,'2007-06-02'); insert into t_test (n_no, n_flg, d_update)values (1,0,'2007-06-03'); insert into t_test (n_no, n_flg, d_update)values (1,1,'2007-06-04'); insert into t_test (n_no, n_flg, d_update)values (1,1,'2007-06-05'); insert into t_test (n_no, n_flg, d_update)values (2,0,'2007-06-01'); insert into t_test (n_no, n_flg, d_update)values (2,0,'2007-06-02'); insert into t_test (n_no, n_flg, d_update)values (2,1,'2007-06-03'); insert into t_test (n_no, n_flg, d_update)values (2,1,'2007-06-04'); insert into t_test (n_no, n_flg, d_update)values (2,1,'2007-06-05'); insert into t_test (n_no, n_flg, d_update)values (3,0,'2007-06-03'); insert into t_test (n_no, n_flg, d_update)values (3,1,'2007-06-04'); insert into t_test (n_no, n_flg, d_update)values (3,1,'2007-06-05'); insert into t_test (n_no, n_flg, d_update)values (3,1,'2007-06-06'); insert into t_test (n_no, n_flg, d_update)values (3,0,'2007-06-07');

    • ベストアンサー
    • MySQL
  • mysql の insert文のクォーテーションについて

    インサート文を作るとき、 INSERT INTO shitumon (  title_question,  komari_level )VALUES(  'mysql の insert文のクォーテーションについて',  '2' ) のように、int系のデータに''とクォーテーションつけても 問題ないのでしょうか? int系のデータのクォーテーションは外しておくのが望ましいのでしょうか?

    • ベストアンサー
    • MySQL
  • 変数のinsertに関しまして

    MySQLのインサートに関して質問です。 2つの値を登録したい場合、 下記のように対応すれば、 データの挿入は通常どおり完了しますが、 insert into テーブル名 (フィールド1, フィールド2) values (値1, 値2);  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 私の場合は、 「ken_name」と「machi_name」という変数を、 上記でいうところの、 「値1」と「値2」に入力したいと思っています。 変数の指す部分は、 それぞれ30文字程度の英数字です。 プログラム内で、 以下のように、 インサートのクエリー処理を行ってみたら、 DB接続も正常に出来ているし、 エラーとかも一切出ていないのですが、 DB内のテーブルに何も登録されていませんでした。 insert into テーブル名 (フィールド1, フィールド2) values (ken_name, machi_name);  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ やり方としては、合っていますでしょうか? 何かアドバイスいただけると嬉しいです。 宜しくお願い致します。

  • postした値のデータ型

    htmlのフォームからpostした値を整数型として受け取れますか? $id = $_POST['id']; こんな感じで受け取ると文字列として受け取っているようなのでmysqlに保存できません シングルクォートで囲むと文字列になるので囲わないでdbに入れたいのです mysql_query("INSERT INTO table(id) VALUES($id');");

    • ベストアンサー
    • PHP

専門家に質問してみよう