我使用 MySQL Workbench 5.2.40 CE 创建了 MySQL DB。起初,我创建了 New EER Model 并将其命名为 test。然后创建名为:testdb 的模式,然后创建名为:table1 的表。此外,创建了一个连接。
以下类用于创建与我的数据库的连接。它是成功的
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 存在。我从工作台上复制了它的名字。
这是 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 中使用了所有小写字母,那么问题出在哪里?我是否通过仅在 Main 中调用“ConnectDB”函数并在我的“DBConnection”类中将类型连接的对象定义为公共静态来做正确的事情?稍后我将在许多类中插入值??我很抱歉这个问题,但我一直在搜索并希望确保我做对了,这是我第一个连接到数据库的 Java 应用程序。
编辑