java mysql表不存在,MySQL和Java:表格不存在

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.

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

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

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

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.

EDIT

bcd4a7d8d288a14a7de684736d45edd8.png

解决方案

Two alternatives:

Connect to testdb

Access your table using database qualifier.

Connecting to testdb:

con = DriverManager.getConnection

("jdbc:mysql://localhost:3306/testdb", "root", "password");

Using database qualifier:

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值