1

我使用 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 应用程序。

编辑

在此处输入图像描述

4

2 回答 2

1

两种选择:

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

连接到 testdb

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

使用数据库限定符

query = " insert into testdb.table1 (name)"+ " values (?)";
于 2012-06-28T12:16:07.517 回答
0

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

于 2012-06-28T12:15:41.223 回答