• ベストアンサー

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
  • 回答数4
  • ありがとう数4

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

  • ベストアンサー
noname#49664
noname#49664
回答No.2

>connについてなのですが、connは接続とクローズのファイルで定義しています。ただ、使いまわせていないという状況でしょうか? 見たところ、ただ単にConnectCloseの中にConnectionを準備しているだけのように見えるのですが。このConnectClose内のConnectionは、いつどこでZenkenkensakuクラス内のConnectionフィールドに設定されているのでしょう? されていないですよね? ということは、 「ConnectCloseでConnectionを作成する」 「ZenkenkensakuのnullのままのConnectionからStatementを作る」 「ConnectCloseのまったく使われないConnectionをとじる」 という感じになってませんか? どこかで、zenkenkensaku1.conn = connectclose1.conn; というような感じでConnectCloseのConnectionをZenkenkensakuのConnectionに設定してやらないとnullのままではありませんか?

guttyon55
質問者

お礼

言われて、ハっと気がつきました。確かに、設定していませんでした。 一文足すだけで実行できました。ありがとうございました。

その他の回答 (3)

  • PED02744
  • ベストアンサー率40% (157/390)
回答No.4

ANo.3です。 「使いまわす」の意味がやっとわかりました。そして、何を勘違いされているのかも。 クラスを分割した場合、それぞれのクラスは別々なので、他のクラスで宣言された内容はわからないのです。 だから、Aというクラスでaという変数が宣言されたとしても、Bというクラスではaという変数の値は見えないのです。 さらに、Aというクラスで宣言されたaとBというクラスで宣言されたaは全く別物です。 値が引き継がれたりするわけではありません。 ですから、Aというクラスで宣言したaという変数の値をBクラスで使いたいのならば、Bクラスに渡してあげる必要があります。 一般的に値の引渡しは、引数付きコンストラクタで値を渡すか、セッターと呼ばれる「クラスに値を設定するメソッド」を宣言することで渡します。

guttyon55
質問者

お礼

回答ありがとうございます。 値の引き渡しを行なうときは、引数付きコンストラクタ(ANo.3)でするかセッターと呼ばれるクラスに値を設定すると。。。 下にも書きましたが、テキスト等の勉強だけではあまり実にならない感じです。自分ではわかっているつもりでも、いざ使ってみようとあれこれしようとしていますが、できていないので正直ショックを受けました。PED02744さんのように、質問に対して回答できるような日が来るように、日々精進して参りたいと思います。

  • PED02744
  • ベストアンサー率40% (157/390)
回答No.3

えっと、、、やっぱり、何かそうとう根本的な所で勘違いがあるような気がしますが。。 コーディングを見ていると 「できない」と悩んでおられる内容と「ロジック」のスキルが不一致なんです。 DBアクセス等の処理はそれなりにかけているのに、 なぜ引数程度のことが「わからない」になるのか。。 これは「課題」で引数やコンストラクタについての理解を求めたい上司の方からの問題なのかな?・・と思ったりしますが、まぁいいです(笑) Zenkenkensaku zenkenkensaku1 = new Zenkenkensaku(); // メインのこれを Zenkenkensaku zenkenkensaku1 = new Zenkenkensaku(connectclose1); // にする Zenkensakuクラスに引数付きコンストラクタ追加 public Zenkensaku(ConnectClose connectclose1){ this.conn = connectclose1.getConnection(); } ConnectCloseクラスにコネクション取得メソッドを追加 public Connection getConnection(){ return this.conn; }

guttyon55
質問者

お礼

解答ありがとうございます。 事実、実務に触れたこともなくテキストを参考にメソッドを使ってみようと思い色々試行錯誤している状態なので、Javaのソースがおかしいところが多々あるかと思います。もう一度SJC-Pの範囲の勉強をしなおす必要がありそうで、スキルが少ないのに質問して申し訳ありませんでした。優しい回答ありがとうございます。今しているのはJavaとデータベースの知識をそれぞれテキスト等で勉強したので、それをミックスさせてみようということでJDBCアプリケーションを作成しています。JDBCの仕方は触り始めてまだ1週間ちょっとで、ソースのまねごとしかできていない状態ですが、基本をもう一度復習し、これから一人前になるべく頑張っていきます。引数、コンストラクタについて詳しく回答くださっているので、じっくり見ながら勉強します!

  • PED02744
  • ベストアンサー率40% (157/390)
回答No.1

Zenkenkensaku.javaのConnection変数connがnullのまま。 nullなのに、createStatement()メソッドを呼び出しているので、nullExceptionになる。 ってことですね。 コネクションをメインで作るのなら、Zenkenkensakuコンストラクタに渡してZenkenkensakuクラスのCOnnection変数に設定してあげないとだめですね。 メインもおかしいです。 どうして、コネクト用とクローズ用に二つコネクションがあるんですか?(^_^;) オブジェクティブな作りがわかっていないとは思いませんが、 なにかとんでもないところで勘違いをされているように思います。

guttyon55
質問者

補足

回答ありがとうございます。メインがおかしいのはクローズするとき ConnectClose connectclose2 = new ConnectClose(); connectclose2.Close(); ではなく、 connectclose1.Close(); とするのが正しいみたいです。ご指摘ありがとうございます。 connについてなのですが、connは接続とクローズのファイルで定義しています。ただ、使いまわせていないという状況でしょうか?(接続ユーザー名とパスは伏せてあります) ConnectClose.java //接続とクローズのファイル package DBAccess; //JDBC APIをインポート import java.sql.*; class ConnectClose { Connection conn = null; public void Connect() throws SQLException, ClassNotFoundException{ // Oracle JDBC Driverのロード Class.forName("oracle.jdbc.driver.OracleDriver"); // Oracle10gに接続 conn = DriverManager.getConnection ("jdbc:oracle:thin:@localhost:1521:ORCL", "*******", "******"); } public void Close() throws SQLException, ClassNotFoundException{ // 接続をクローズ conn.close(); } } 以上、よろしくお願いいたします。

関連するQ&A

  • Oracle Database 10g Express Editionを使いたい

    と思いDLしてインストールして SQLPLUSで ユーザ:usr1 パスワード:psswd1 でOracleに入り SQL> CREATE TABLE "PROJECT" ( "ID" NUMBER NOT NULL ENABLE, "PJNAME" VARCHAR2(100) NOT NULL ENABLE, CONSTRAINT "PROJECT_PK" PRIMARY KEY ("ID") ENABLE ) / 2 3 4 5 6 表が作成されました。 SQL> describe project; 名前 NULL? 型 ----------------------------------------- -------- ---------------------------- ID NOT NULL NUMBER PJNAME NOT NULL VARCHAR2(100) SQL> とテーブルを作り以下のJavaアプリを作り実行しましたが 動きませんでした。getConnectionの引数の "jdbc:oracle:thin:@localhost:1521:ORCL" の中のORCLの部分に何を入れてよいのか分からなかったので 根拠なしにORCLを使ったのが悪かったと思います。 ORCLの部分には何を入れたらいいのでしょうか? package pack; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class JdbcTest { public static void main(String args[]) throws SQLException,ClassNotFoundException { Class.forName("oracle.jdbc.driver.OracleDriver"); Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORCL","usr1","psswd1"); Statement stmt = conn.createStatement(); ResultSet rset = stmt.executeQuery("select ip,pjname from project"); while (rset.next()) { System.out.println(rset.getInt(1) + "\t" + rset.getString(2)); } rset.close(); stmt.close(); conn.close(); } } エラー:Exception in thread "main" java.sql.SQLException: Listener refused the connection with the following error: ORA-12505, TNS:listener does not currently know of SID given in connect descriptor The Connection descriptor used by the client was: localhost:1521:ORCL

    • ベストアンサー
    • Java
  • 「Exception in thread "main" java.lang.NoClassDefFoundError: CUSTOMER」エラー

    Oracle9i R2にJDBCで接続してCUSTOMER表のレコード件数を調べる単純なJavaプログラムをつくろうとしています。 以下のソースをOracle端末上で実行すると「Exception in thread "main" java.lang.NoClassDefFoundError: CUSTOMER」というエラーメッセージが表示されます。 環境設定としてCLASSPATHにclasses12.zipのパスを通しました。 ------------------------------------------------- // JDBC APIのインポート import java.sql.*;class CUSTOMER { public static void main (String args[]) throws SQLException, ClassNotFoundException { // JDBC Driverの登録 Class.forName("oracle.jdbc.driver.OracleDriver"); // Oracle9iに接続 Connection conn = DriverManager.getConnection ("jdbc:oracle:thin@192.168.0.10:1521:testdb", "test", "test"); // ステートメントを作成 Statement stmt = conn.createStatement(); // 問い合わせの実行 ResultSet rset = stmt.executeQuery("SELECT COUNT(*) FROM CUSTOMER"); // 問い合わせ結果の表示 while ( rset.next() ) { // 列番号による指定 System.out.println(rset.getInt(1) + "\t" + rset.getString(2)); } // 結果セットをクローズ rset.close(); // ステートメントをクローズ stmt.close(); // 接続をクローズ conn.close(); } } ------------------------------------------------- 何かおわかりの方いらっしゃいましたら教えて下さい。宜しくお願いします。

    • ベストアンサー
    • Java
  • DBサーバ上でjdbcによるアクセス方法について

    Oracle JDBC Driverのロードを以下のように行おうとしました。 import java.sql.*; class JavaDataAccess01 { public static void main (String args[]) throws SQLException, ClassNotFoundException { // Oracle JDBC Driverのロード Class.forName("oracle.jdbc.driver.OracleDriver"); // Oracle10gに接続 Connection conn = DriverManager.getConnection ("jdbc:oracle:thin:@localhost:1521:ORCL", "test", "test"); // ステートメントを作成 Statement stmt = conn.createStatement(); // 問合せの実行 ResultSet rset = stmt.executeQuery("select brand_id,value from brand"); // 問合せ結果の表示 while ( rset.next() ) { // 列番号による指定 System.out.println(rset.getInt(1) + "\t" + rset.getString(2)); } // 結果セットをクローズ rset.close(); // ステートメントをクローズ stmt.close(); // 接続をクローズ conn.close(); } } コンパイル後実行すると以下のように例外がでます。 Exception in thread "main" java.lang.ClassNotFoundException: oracle.jdbc.driver. OracleDriver at java.net.URLClassLoader$1.run(URLClassLoader.java:199) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:187) at java.lang.ClassLoader.loadClass(ClassLoader.java:289) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274) at java.lang.ClassLoader.loadClass(ClassLoader.java:235) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:141) at JavaDataAccess01.main(JavaDataAccess01.java:11) ちなみにコンパイルして作成したクラスファイルはJavaDataAccess01です。使用しているDBはoracle10gです。環境設定もCLASSPATHにD:\oracle\product\10.2.0\db_1\jdbc\lib\classes12.zipを追加しているのですがどうにもうまくいきません。どなたか解決方法がわかる方、ご教授お願いします。

  • JDBC PostgreSQLで必要なファイルはあるのでしょうか?

    LinuxでPostgreSQLのデータベースをJDBCでアクセスしたいのですが、以下のソースで次のエラーが発生します。何か必要なファイルでもあるのでしょうか? java.lang.ClassNotFoundException:org.postgres.Driver また、LinuxのODBCも必要なファイルがあるのでしょうか? import java.sql.*; class jdbcSample2 { public static void main(String argv[]) { int a; String b; try { //Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver"); //String url = "jdbc:odbc:test"; Class.forName ("org.postgres.Driver"); String url = "jdbc:postgresql://127.0.0.1:5432/test"; String user = ""; String password = ""; Connection con = DriverManager.getConnection(url, user, password); Statement stmt = con.createStatement (); String query = "select * from member;"; ResultSet rs = stmt.executeQuery (query); while(rs.next()){ a = rs.getInt(1); b = rs.getString(2); System.out.println(a + ", " + b); } rs.close(); stmt.close(); con.close(); } catch (SQLException ex) { System.err.println("SQL failed."); ex.printStackTrace (); } catch (Exception ex) { ex.printStackTrace (); } } }

  • JavaでのOracle接続について(JDBC)

    はじめまして。 先週よりJavaの勉強を始めていまして 先日からDB接続(Oracle)をやっているのですが、Oracleに接続することが出来ません。色々なサイトからクラスパスが通っていないというエラーのようなのですが、プログラミング経験のある友人に聞いてもさっぱり原因が分かりません。また何度もインストールをやり直して同じです。以下に環境とソースを載せておきますので、もし何か解決のヒントになるような事がありましたら教えて下さい。 ●状況 (1)コンパイルは通るがjavaコマンドで実行をすると”Exception in thread "main" java.lang.ClassNotFoundException: oracle.jdbc.driveOracleDriver”が出てしまう。 (2)C:\oracle\ora92\jdbc\lib\ojdbc14.jarを環境変数→Pathへしっかりと通してあります。(setコマンドでも確認済みです) (3)C:\j2sdk1.4.1_02\jre\lib\extへojdbc14.jarをコピー (4)SQL PLUSからは接続出来る。 ●環境 クライアント:Win2000 DBサーバー:SQLサーバー(別マシンに環境構築) DB:Oralce9.2.0 JDK:1.4.1_02 import java.sql.*; class Employee { public static void main (String args []) throws SQLException,ClassNotFoundException { // Oracle JDBC Driverのロード Class.forName("oracle.jdbc.driver.OracleDriver"); Connection conn = DriverManager.getConnection ("jdbc:oracle:thin:@ホスト名:1521:SID", "ID", "パスワード"); Statement stmt = conn.createStatement (); ResultSet rset = stmt.executeQuery ("SQL"); while (rset.next ()) System.out.println (rset.getString ("ISBN")); rset.close(); conn.close(); } } 以上です。何か足りない情報がありましたら教えて下さい。

  • Javaで、TomCatプロジェクトを使用したJDBCを使用したデータベースのアクセスについて教えてください。

    すぐに回答を! TomCatプロジェクトでDBアクセスできず困っています。 ●Javaプロジェクトの場合(成功)  ・Javaプロジェクト作成 → 新規 → クラスを作成。  ・プロジェクト選択 → メニューバー「プロジェクト」 → プロパティー   → Javaのビルド・パス → ライブラリーの追加 → ユーザーライブラリー   → 新規 → MySQLドライバを追加  ・次のソースの実行にて、JDBC Dirverの接続を確認。 [JdbcSample.java] import java.sql.*; class JdbcSample { public static void main(String[] args) { try { // 1.JDBC Driver の登録 Class.forName("com.mysql.jdbc.Driver").newInstance(); // 2.データベースへの接続 Connection con = DriverManager.getConnection( "jdbc:mysql://localhost/db1", "(ユーザー名)", "(パスワード)"); // 3.SQL ステートメント・オブジェクトの作成 Statement stmt = con.createStatement(); // 4.SQL ステートメントの発行 ResultSet rs = stmt.executeQuery("SELECT * from null_test_tbl"); // 5.結果の出力 while (rs.next()) { System.out.println(rs.getString("allow_null")); } // 6.データベースのクローズ rs.close(); stmt.close(); con.close(); } catch (SQLException e1) { System.out.println( "SQLException: " + e1.getMessage()); System.out.println( " SQLState: " + e1.getSQLState()); System.out.println( " VendorError: " + e1.getErrorCode()); } catch (Exception e2) { System.out.println( "Exception: " + e2.getMessage()); } } } ●TomCatプロジェクト作成の場合(失敗)  (1)TomCatプロジェクト作成 → 新規 → クラスを作成。  (2)プロジェクト選択 → メニューバー「プロジェクト」 → プロパティー   → Javaのビルド・パス → ライブラリーの追加 → ユーザーライブラリー   → 新規 → MySQLドライバを追加  (3)サーブレットからBeanの呼び出し。  「​http://localhost:8080/test_mvc/jdbcSample​」  (4)エラー「Exception: com.mysql.jdbc.Driver」 が発生。(ドライバーが見つかりません?) [servlet] package ne.jp; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class TestMvc extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { JdbcSample da = new JdbcSample(); try { da.dbAccessTest(); (※)←ここでBeanのデータベースアクセスメソッドを呼び出し } catch (Exception e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } // HTML出力の準備 response.setContentType("text/html;charset=Shift_JIS"); PrintWriter out = response.getWriter(); out.println("<html><body><p>こんにちわ!</p></body>"); } } [Bean] package ne.jp; import java.sql.*; class JdbcSample { //Beanコンストラクタ public JdbcSample(){ } //データベースアクセス確認 public void dbAccessTest(){ try { // 1.JDBC Driver の登録 Class.forName("com.mysql.jdbc.Driver").newInstance(); // 2.データベースへの接続 Connection con = DriverManager.getConnection( "jdbc:mysql://localhost/db1", "***", "*****"); // 3.SQL ステートメント・オブジェクトの作成 Statement stmt = con.createStatement(); // 4.SQL ステートメントの発行 ResultSet rs = stmt.executeQuery("SELECT * from null_test_tbl"); // 5.結果の出力 while (rs.next()) { System.out.println(rs.getString("allow_null")); } // 6.データベースのクローズ rs.close(); stmt.close(); con.close(); } catch (SQLException e1) { System.out.println( "SQLException: " + e1.getMessage()); System.out.println( " SQLState: " + e1.getSQLState()); System.out.println( " VendorError: " + e1.getErrorCode()); } catch (Exception e2) { System.out.println( "Exception: " + e2.getMessage()); } } }

    • ベストアンサー
    • Java
  • JavaでOracle9iのデータベースにアクセスしたいのですが

    JavaでOracleのデータベース上のテーブルにアクセスして、 ウェブブラウザで表示したいのですが、 参考として以下の文を入手はしたのですが、 それぞれの文の意味がよく分かりません。 import java.sql.*; public class JDBCExample { public static void main(String args[]) throws SQLException { DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); Connection conn= DriverManager.getConnection("jdbc:oracle:thin:@dlsun137:5521:sol1", "scott", "tiger"); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("select ename, empno, sal from emp"); while(rs.next()){ String name= rs.getString(1); int number = rs.getInt(2); double salary = rs.getDouble(3); System.out.println(name+" "+number+" "+salary); } rs.close(); conn.close(); } } 見た感じ、テーブルそのものを表示する記述ではないような気がするのと、 仮にこのクラスを作ったとして、このクラスだけで望んだ結果を得られるのでしょうか? どなたか、よろしくお願いいたします!

    • ベストアンサー
    • Java
  • JDBC Connectionを開放し続ける方法

    JDBC経由でOracleに接続して、接続しっぱなしにしたいのですが、どうすればいいのかよくわかりません。 とりあえず正常終了するようなソースを書いてみました。このソースからconnectionをCloseしないように編集したいのですが、どうすればいいのかわかりません。 やりたいことはJDBCの複数同時Connectionを試したくて、このConnectionを維持したまま、何回かこのプログラムを実行すればいいかなと思っているんですが。 長くなりましたが、よろしくお願いします。 import java.sql.*; class Employee { public static void main (String args []) throws SQLException { // Load the Oracle JDBC driver DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); // Connect to the database // You must put a database name after the @ sign in the connection URL. // You can use either the fully specified SQL*net syntax or a short cut // syntax as <host>:<port>:<sid>. The example uses the short cut syntax. Connection conn = DriverManager.getConnection ("jdbc:oracle:thin:@HOST:PORT:SID", "scott", "tiger"); // Create a Statement Statement stmt = conn.createStatement (); // Select the ENAME column from the EMP table ResultSet rset = stmt.executeQuery ("select ENAME from EMP"); // Iterate through the result and print the employee names while (rset.next ()) System.out.println (rset.getString (1)); } }

    • ベストアンサー
    • Java
  • jdbc:oracle:thinでSSLを使用する方法について

    java.sql.SQLException: I/O例外です。: The Network Adapter could not establish the connectionというエラーが発生します。 ソースは以下です、どこが間違っているかわかりません。 import java.sql.*; import java.util.*; public class TestSSL { public static void main(String[] argv) throws Exception { DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); Properties prop = new Properties(); prop.setProperty("user", "scott"); prop.setProperty("password", "tiger"); // THIS DOES NOT WORK YET prop.setProperty("oracle.net.ssl_cipher_suites", "(ssl_rsa_export_with_rc4_40_md5, ssl_rsa_export_with_des40_cbc_sha)"); prop.setProperty("oracle.net.ssl_client_authentication", "false"); prop.setProperty("oracle.net.ssl_version", "3.0"); prop.setProperty("oracle.net.encryption_client", "REJECTED"); prop.setProperty("oracle.net.crypto_checksum_client", "REJECTED"); Connection conn = DriverManager.getConnection( "jdbc:oracle:thin:@(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCPS)(HOST = localhost)(PORT = 2484))) (CONNECT_DATA = (SERVICE_NAME = XE)))", prop); Statement stmt = conn.createStatement(); ResultSet rset = stmt.executeQuery( "select 'Hello Thin driver SSL " + "tester '||USER||'!' result from dual"); while(rset.next()) System.out.println(rset.getString(1)); rset.close(); stmt.close(); conn.close(); } } ご教授よろしくお願いします。

  • 【Servletのエラーについて教えて下さい!】

    こんにちわ。いつもありがとうございます。 サーブレットをコンパイル後、実行するとHTTPのPOSTメソッドは、このURLではサポートされていません。 と表示されます。 前のJSPからはmethod="POST"にて送信しているのですが・・・ すみませんが、ご教授下さい! ソースは以下となります。 よろしくお願い致します! import javax.servlet.http.*; import java.sql.*; import java.io.*; public class EditingServlet extends HttpServlet { public void doPost(HttpServletRequest req, HttpServletResponse res) throws IOException { /*フィールドの宣言*/ Connection conn = null; res.setContentType("text/html; charset=Shift_JIS"); PrintWriter out = res.getWriter(); out.println("<html><head></head><body>"); String Str = req.getParameter( "Str" ); try { String user = "ID", pwd="PW"; Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); String url="jdbc:sqlserver://10.121.67.247:1433;DatabaseName=Name"; /*JDBC URL*/ conn = DriverManager.getConnection(url,user,pwd); Statement stmt = conn.createStatement(); stmt.executeUpdate("UPDATE T_Strfer SET フラグ ='1' WHERE id='"+ Str +"'"); out.println("データを更新しました!<br>"); } catch (ClassNotFoundException e) { out.println("クラスが見つかりません。"); } catch (SQLException e) { out.println("データの更新に失敗しました。 "); } finally { try { if (conn != null) { conn.close(); } } catch (SQLException e) {} } out.println("</body></html>"); out.close(); } }

    • ベストアンサー
    • Java