我已經使用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應用程序。
編輯
做數據庫的 「測試」 包含表 「表1」? – naresh
如果您創建了名爲testdb的模式,那麼您的jdbc url是/ test? –
您是否確認過某些GUI工具甚至是測試數據庫和table1的工作臺? – mtariq