• ベストアンサー

どこが間違っているか教えてください

yusukeyの回答

  • yusukey
  • ベストアンサー率56% (17/30)
回答No.2

例外のスタックトレースから、NullPointerException の発生している場所を確認しましょう。 ソースコードの行数が表示されているはずですので、そこで扱っている変数が null になっているわけです。

関連するQ&A

  • サーブレットでデータベース操作。

    サーブレットを使ってMySQL内のテーブルにレコードを追加、変更、削除できるようなプログラムを作っています。流れとしましては『HTML画面→サーブレット起動→レコード追加、変更、削除』といった具合です。追加、変更ができてなぜか削除だけできません。SQL文を書き換えるだけのはずなのですが・・。どなたか教えて下さい。windows2000Professional, j2sdk1.4.0_01, Tomcat3.3.1,MySQL3.23.47 略 . . Connection con = null; Statement stmt = null; try { con = DriverManager.getConnection( "jdbc:mysql://localhost/db_ichat", "root", "pen3"); stmt = con.createStatement(); String seqno = request.getParameter("seqno"); String name = request.getParameter("name"); String namejp = new String(name.getBytes("8859_1"), "JISAutoDetect"); String psw = request.getParameter("psw"); String pswjp = new String(psw.getBytes("8859_1"), "JISAutoDetect"); String email = request.getParameter("email"); StringBuffer buf = new StringBuffer(); buf.append("delete from t_id "); buf.append("where seqno = "); buf.append(seqno); stmt.executeUpdate(buf.toString()); try { stmt.close(); } catch (Exception e) {} try { con.close(); } catch (Exception e) {} . . 略。

    • ベストアンサー
    • Java
  • jspのプログラムについて

    jspファイルで データベースの中のテーブルの中身をCSVファイルに出力するプログラムを教えてください。 delete文で中身を消すプログラムは書けたのですが、これはできません。 conn = null; st=null; conn=DriverManager.getConnection("jdbc:mysql://localhost/データベース名?" + "user=ユーザー名&password=パスワード&useUnicode=true&characterEncoding=utf8"); st=conn.createStatement(); StringBuffer buf = new StringBuffer(); buf.append("delete from where id="+id); st.executeUpdate(buf.toString()); これで削除はできました。 なのでbuf.appendの中身を buf.append("SELECT from テーブル名 INTO OUTFILE "c:/data" "); これに書き換えればできると思ったのですができません。 よろしくお願いします。

    • ベストアンサー
    • Java
  • 件数取得方法

    以下のソースはSQLを発行して、hashに検索結果を格納しているのですが、 取得した件数を知りたいのですが、どうすればよいでしょうか? 基本的なことかもしれませんが、よろしくお願いします。 public Hashtable hash; public void getData(String param) throws SQLException { StringBuffer strSQL = new StringBuffer(); strSQL.append("SELECT "); strSQL.append(" *"); strSQL.append(" FROM"); strSQL.append(" TABLE"); strSQL.append(" WHERE"); strSQL.append(" NO = "); strSQL.append(param); ArrayList list = DBAccess.SetRecordToArray(strSQL.toString(), 0); hash = (Hashtable)list.get(0); }

    • ベストアンサー
    • Java
  • JDBCで複数のクラスファイルを作成しアクセスしようとしたときに起こる問題点

    Javaとデータベース(oracle)を連動させて、Statementなどを実行して値をとってこようとしています。1つのJavaファイル内にてコンパイル、実行はできたのですが、複数のJavaファイルに切り出したときにコンパイルはできるのですが、実行すると Exception in thread "main" java.lang.NullPointerException at DBAccess.Zenkenkensaku.zenkenkensaku(Zenkenkensaku.java:21) at DBAccess.JavaDataAccess.main(JavaDataAccess.java:19) と出てしまってできません。エラーメッセージを見る限り、ステートメントの作成がうまくできていない感じがするのですが、何がいけなかったのでしょうか、原因がわかりません。よろしくお願いします。下にそのファイルを書きます。 JavaDataAccess.java //DBにアクセスするクラスの切り出し package DBAccess; //JDBC APIをインポート import java.sql.*; //メイン class JavaDataAccess { public static void main (String args[]) throws SQLException, ClassNotFoundException { //接続の呼び出し ConnectClose connectclose1 = new ConnectClose(); connectclose1.Connect(); //全件検索の呼び出し Zenkenkensaku zenkenkensaku1 = new Zenkenkensaku(); zenkenkensaku1.zenkenkensaku(); //接続をクローズする呼び出し ConnectClose connectclose2 = new ConnectClose(); connectclose2.Close(); } } Zenkenkensaku.java //全件検索ファイル //パッケージ package DBAccess; //JDBC APIをインポート import java.sql.*; class Zenkenkensaku { //宣言と初期化 Connection conn = null; Statement stmt = null; ResultSet rset = null; //全件検索の内容 public void zenkenkensaku() throws SQLException { // ステートメントを作成 stmt = conn.createStatement(); //問合せの実行 rset = stmt.executeQuery("select 商品コード, 商品名, 単価 from 商品"); // 問合せ結果の表示 while( rset.next()){ //列番号による指定 System.out.println (rset.getInt(1) + "\t" + rset.getString(2) + "\t" + rset.getInt(3)); } } }

    • ベストアンサー
    • Java
  • Javaで機種依存文字を表示できない

    ※以下に記載する【高】は(はしご高)という機種依存文字として記載します。"はしご高"を入力すると、OKWaveで表示しないためです。。 JDBC経由で、PostgreSQLのDBより【高】という機種依存文字を含む文字列を取得しようとしたところ【高】の文字が抜けた状態でしか取得できません。 "高橋" → "橋" として取得してしまう。 ※ Eclipseのデバッグ機能を使用し、DBからデータ値を取得した直後の値を参照しました。 JAVAで機種依存文字【高】を取り扱い、コンソールなどに出力することはできるのでしょうか? Java : JDK1.5.03 PostgreSQL : 8.1.3 : DB文字コード EUC-JP JDBC : postgresql-8.1-408.jdbc3.jar -- 以下プログラム例 Connection con = null; Statement stm = null; ResultSet rs = null; String rtn = ""; try { stm = con.createStatement(); rs = stm.executeQuery(query); rs.next(); rtn = rs.getString(1); ←←←← ここでの変数を確認! System.out.println(rtn); ←←←← ここでの表示を確認! }

    • ベストアンサー
    • Java
  • SQLException発生

    StringBuffer sb = new StringBuffer(); sb.append("INSERT INTO FAT_WK_TEMP ("); sb.append(" ID"); sb.append(" ,DATA"); sb.append(" ) VALUES ("); sb.append(" ?"); sb.append(" ,?"); sb.append(" )"); ps = con.prepareStatement(sb.toString()); ps.setIn(1,1); ps.setBinaryStream(2,data,fileLength); ps.execute(); 上記のプログラムを実行するところでjava.sql.SQLException: I/O例外です。: Connection reset by peer というエラーが発生してしまいます。 なぜ、このようなエラーになるのか原因が分かりません。どういう場合にこのエラーが起きるのか教えて頂けないでしょうか? なお、 FAT_WK_TEMPのテーブルのDATAという項目は、BLOB型になっております。 また、ps.setBinaryStream(2,data,fileLength); 部分のdataは、FileInputStreamクラスで、 デバッグで中身を見ると、java.io.FileInputStream@a883e となっています。 fileLengthは、300336 です。

    • ベストアンサー
    • Java
  • JavaMail,本文中の改行について

    現在JavaMailを使用してメールの送信プログラムを作成中です。 メール本文の編集で改行コードを挿入しているのですが、送られたメールは改行されていない状態になっております。 どなたか対処方法をご教示願います。 ---------参考コード StringBuffer contents = new StringBuffer(); contents.append("依頼番号: ").append(reqNo).append(System.getProperty("line.separator")); String message = contents.toString(); <中略> mimeMessage.setText(message,"iso-2022-jp"); 当方、大変焦っております。なにとぞよろしくお願いします。

    • ベストアンサー
    • Java
  • データ数をカウントしたいのですが

    JAVAのJDBCを使いMySqlを操作しデータ数を取得するプログラムです。自分なりに考えたプログラムは Connection con = null; String sql = "select count(*) from テーブル名"; // コネクションを作成する。 con = DriverManager.getConnection(url, user, pass); Statement st = con.createStatement(); // SQLを実行する。 ResultSet rs = st.executeQuery(sql); String count = rs.getString("count(*)"); 実行した結果上手く出来ないのですが、この部分での間違いはありますか?

    • ベストアンサー
    • Java
  • javaをperlに書き替えたいんです

    以下をperlに書き換えたいのですが・・・ perlで組まなくてはいけなく自分なりに書き換えてみたのですが意味が分からなくなってしまいましたので質問しました。 public class TestNgramAnalyzer { private static Analyzer analyzer = new CJKAnalyzer(); private static final String TEXT = "今日は晴れです。"; public static void main(String[] args) throws IOException { TokenStream stream = analyzer.tokenStream( "F", new StringReader( TEXT ) ); StringBuffer sb = new StringBuffer(); for( Token token = stream.next(); token != null; token = stream.next() ){ //System.out.println( token.toString() ); sb.append( '[' ).append( token.termText() ).append( "] " ); } stream.close(); System.out.println( TEXT + " => " + sb.toString() ); } }

  • 文字列編集時の領域使用について

    例えば1万行データファイルを行単位で読み込み、読み込んだ行を編集して出力データファイルを作成するような処理で、1行読み込み、編集して1行出力する方法か、ある程度の行を処理してから出力するか迷っています。編集したデータはStringBufferにappendする方法を考えています。StringBufferにヒープを超過しないようappendしたいので1行ずつが無難でしょうか?ちなみに、編集結果を出力した後、StringBufferを使いまわす(初期化??)には、一旦nullを変数に代入すればよいのでしょうか?

    • ベストアンサー
    • Java