MySQL和Java:表不存在。

时间:2022-06-13 22:26:27

I have created MySQL DB using MySQL Workbench 5.2.40 CE. At first, I created New EER Model and named it test. Then created schema named: testdb, then table named: table1. Also, created a connection.

我使用MySQL Workbench 5.2.40 CE创建了MySQL DB。起初,我创建了新的EER模型并命名它为test。然后创建了名为:testdb的模式,然后将表命名为:table1。同时,创建一个连接。

The following class to create connection with my DB. It is successful

下面的类创建与我的DB的连接。它是成功的

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

Then, I made another class that contains the Main function that calls the "ConnectDB" from the the above "DBConnection" class. The problem is that I get an error saying: Got an exception! Table 'test.table1' doesn't exist

然后,我创建了另一个类,其中包含从上面的“DBConnection”类中调用“ConnectDB”的主要函数。问题是,我得到一个错误:得到一个异常!表的测试。表1”不存在

I'm sure that table1 exists. I copied its name from the workbench.

我确信table1是存在的。我从工作台复制了它的名字。

This is the code for the Main class:

这是主要类的代码:

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());
} 
}
}

So, where is the problem if the table exists and I used all small letters in Java and MySQL?? and am I doing the right thing by calling the "ConnectDB" function in the Main only and define an object of type connection as public static in my "DBConnection" class?? I'm going to insert values throughout many classes later?? I'm sorry for the question, but I have been searching a lot and want to make sure I got it right, and this is my first Java application that connects to database.

那么,如果表格存在,并且我在Java和MySQL中使用了所有的小写字母,那么问题在哪里呢?在我的“DBConnection”类中,只在Main中调用“ConnectDB”函数并将类型连接的对象定义为public static,这样做对吗?我将在以后的许多类中插入值?对于这个问题,我很抱歉,但是我已经搜索了很多,想要确保我做对了,这是我第一个连接到数据库的Java应用程序。

EDIT

编辑

MySQL和Java:表不存在。

2 个解决方案

#1


1  

Two alternatives:

两种选择:

  1. Connect to testdb
  2. 连接到testdb
  3. Access your table using database qualifier.
  4. 使用数据库限定符访问表。

Connecting to testdb:

连接到testdb:

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

Using database qualifier:

使用数据库限定符:

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

#2


0  

You JDBC url is not correct use jdbc:mysql://localhost:3306/testdb in your code.

您的JDBC url不是正确的使用JDBC:mysql://localhost:3306/testdb在您的代码中。

#1


1  

Two alternatives:

两种选择:

  1. Connect to testdb
  2. 连接到testdb
  3. Access your table using database qualifier.
  4. 使用数据库限定符访问表。

Connecting to testdb:

连接到testdb:

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

Using database qualifier:

使用数据库限定符:

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

#2


0  

You JDBC url is not correct use jdbc:mysql://localhost:3306/testdb in your code.

您的JDBC url不是正确的使用JDBC:mysql://localhost:3306/testdb在您的代码中。