我使用MySQL Workbench 5.2.40 CE创建了MySQL数据库。起初,我创建了新的EER模型,并将其命名为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
然后,我创建了另一个包含Main函数的类,该函数从上面的“DBConnection”类调用“ConnectDB”。问题是我得到一个错误说: 有例外! 表'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”类中将一个类型为connection的对象定义为public static?我将在以后的许多课程中插入值?我很抱歉这个问题,但我一直在搜索,并希望确保我做对了,这是我的第一个连接到数据库的Java应用程序。
修改
答案 0 :(得分:1)
两种选择:
testdb
连接到testdb :
con = DriverManager.getConnection
("jdbc:mysql://localhost:3306/testdb", "root", "password");
使用数据库限定符:
query = " insert into testdb.table1 (name)"+ " values (?)";
答案 1 :(得分:0)
您的JDBC网址使用不正确
代码中的jdbc:mysql://localhost:3306/testdb
。