gpt4 book ai didi

java - MySQL 和 Java : table doesn't exist

转载 作者:行者123 更新时间:2023-12-01 15:18:54 25 4
gpt4 key购买 nike

我使用 MySQL Workbench 5.2.40 CE 创建了 MySQL DB。首先,我创建了新的 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

然后,我创建了另一个类,其中包含从上面的“DBConnection”类调用“ConnectDB”的 Main 函数。问题是我收到一条错误消息:有异常(exception)!表“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)静态,这是正确的做法吗?我稍后将在许多类中插入值?我很抱歉问这个问题,但我已经进行了很多搜索并希望确保我的答案是正确的,这是我的第一个连接到数据库的 Java 应用程序。

编辑

enter image description here

最佳答案

两种选择:

  1. 连接到testdb
  2. 使用数据库限定符访问您的表。

连接到 testdb:

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

使用数据库限定符:

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

关于java - MySQL 和 Java : table doesn't exist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11244012/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com