2012-06-28 44 views
-1

我已經使用MySQL Workbench 5.2.40 CE創建了MySQL DB。起初,我創建了新的EER模型並將其命名爲測試。然後創建名爲testdb的模式,然後將表命名爲:table1。另外,創建了一個連接。MySQL和Java:表不存在

以下類與我的數據庫建立連接。這是成功的

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函數的類。問題是我得到一個錯誤說: 有一個例外! 表'test.table1'不存在

我確定table1存在。我從工作臺複製了它的名字。

這是主類的代碼:

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的所有小字母?我是通過在Main中調用「ConnectDB」函數來做正確的事情,並在我的「DBConnection」類中將連接類型的對象定義爲public static?我將在以後的許多類中插入值?我爲這個問題感到抱歉,但是我一直在尋找很多東西,並且希望確保我的答案是正確的,這是我的第一個連接到數據庫的Java應用程序。

編輯

enter image description here

+0

做數據庫的 「測試」 包含表 「表1」? – naresh

+2

如果您創建了名爲testdb的模式,那麼您的jdbc url是/ test? –

+0

您是否確認過某些GUI工具甚至是測試數據庫和table1的工作臺? – mtariq

回答

0

你的JDBC URL是不是在你的代碼正確使用 jdbc:mysql://localhost:3306/testdb

1

兩種選擇:

  1. 連接到testdb
  2. 訪問您的表使用的數據庫限定符。

連接到TESTDB

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

使用數據庫預選賽

query = " insert into testdb.table1 (name)"+ " values (?)"; 
+0

我試圖連接到testdb,但我得到:未知的數據庫:'testdb'。 –

+0

@JuryA通過'MWB'和'java'建立的連接是否是*相同的MySQL數據庫實例*? –

+0

@JuryA我的問題是「* MWB是否也連接到相同的主機名,端口?*」 –