1

MySQL Workbench 5.2.40 CE を使用して MySQL DB を作成しました。最初に、新しい EER モデルを作成し、test という名前を付けました。次に、testdb という名前のスキーマを作成し、次に table1 という名前のテーブルを作成しました。また、接続を作成しました。

私のDBとの接続を作成するための次のクラス。成功です

import java.sql.*;

public class DBConnection {

public static Connection con = null;

public static Object Connect;

public static void ConnectDB () {

System.out.println("--- MySQL JDBC Connection Testing -----");

try {

     Class.forName("com.mysql.jdbc.Driver"); //loading the driver

    } catch (ClassNotFoundException e) {

    System.out.println("Where is your MySQL JDBC Driver?");
    e.printStackTrace();
    return;

    }

System.out.println("MySQL JDBC Driver Registered!");

try {

     //Connect to the database
     con = DriverManager.getConnection
     ("jdbc:mysql://localhost:3306/test", "root", "password");

    } catch (SQLException e) {

    System.out.println("Connection Failed! Check output console");
    e.printStackTrace();
    return;
    }

if (con != null) {
System.out.println("You made it, take control your database now!");

} else {
System.out.println("Failed to make connection!");
}
}
} //end class

次に、上記の「DBConnection」クラスから「ConnectDB」を呼び出す Main 関数を含む別のクラスを作成しました。問題は、「 Got an exception! 」というエラーが表示されることです。テーブル 'test.table1' が存在しません

table1 が存在すると確信しています。その名前をワークベンチからコピーしました。

これは Main クラスのコードです。

import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.sql.PreparedStatement;
import java.util.Scanner;
import java.sql.*;

public class Main {

public static void main(String[] argv) {

String name=null;                           
DBConnection.ConnectDB(); //connect to database

//Read the inputs from the user
System.out.println("Enter the name: ");
Scanner userInput=new Scanner(System.in);
name=userInput.next();

//Confirmation messages
System.out.println("You entered: "+ name);

// BEGIN INSERT TO DB 
try{
// the mysql insert statement
String query=null;
query = " insert into table1 (name)"+ " values (?)";

// create the mysql insert preparedstatement

PreparedStatement preparedStmt = DBConnection.con.prepareStatement(query);
preparedStmt.setString    (1, name);

// execute the preparedstatement
preparedStmt.execute();
System.out.println("Inserted");
DBConnection.con.close();

} 
catch (Exception e)
{
  System.err.println("Got an exception!");
System.err.println(e.getMessage());
} 
}
}

では、テーブルが存在し、Java と MySQL ですべて小文字を使用した場合、どこに問題があるのでしょうか?? メインでのみ「ConnectDB」関数を呼び出し、「DBConnection」クラスで接続タイプのオブジェクトを public static として定義することで正しいことをしていますか?? 後で多くのクラスに値を挿入するつもりですか?? 質問して申し訳ありませんが、私はよく検索しており、正しいことを確認したいと思っています。これは、データベースに接続する最初の Java アプリケーションです。

編集

ここに画像の説明を入力

4

2 に答える 2

1

2つの選択肢:

  1. に接続しますtestdb
  2. データベース修飾子を使用してテーブルにアクセスします。

testdbに接続しています

con = DriverManager.getConnection
     ("jdbc:mysql://localhost:3306/testdb", "root", "password");

データベース修飾子の使用

query = " insert into testdb.table1 (name)"+ " values (?)";
于 2012-06-28T12:16:07.517 に答える
0

JDBCURLが jdbc:mysql://localhost:3306/testdbコードで正しく使用されていません。

于 2012-06-28T12:15:41.223 に答える