当前位置: 首页 > 知识库问答 >
问题:

MySQL和Java:表不存在

怀刚毅
2023-03-14

我使用MySQL Workbench 5.2.40CE创建了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”的主函数。问题是我得到一个错误,说:get a exception!表“test.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());
} 
}
}

共有1个答案

常小白
2023-03-14

两个备选方案:

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

连接到TestDB:

con = DriverManager.getConnection
     ("jdbc:mysql://localhost:3306/testdb", "root", "password");
query = " insert into testdb.table1 (name)"+ " values (?)";
 类似资料:
  • 我正在尝试将Employee实体插入数据库。我使用的是JPA,数据库是MySQL。当我尝试插入实体时,它给我的是Test.Employee不存在。我假设我不必创建表。实体将自动创建带有注释名称的表。请找到下面的异常和代码。 http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd“>

  • 我正在使用Spring和Hibernate编写Web应用程序,但第一次遇到这种问题。每当我在服务器上运行我的应用程序时,它都会说**“java.sql.SQLSyntaxErrorException:表'restaurantapp.users'不存在。**我不明白的是,我的数据库中甚至没有一个名为“users”的表,而且我从未在我的应用程序中使用过表“users”。代码部分如下所示。需要帮助来解决

  • 问题内容: 我要添加此表: 我得到了1050个“表已经存在” 但是该表不存在。有任何想法吗? 编辑:更多细节,因为每个人似乎都不相信我:) 产量: 1146-表’gunzfact_vbforumdb.contenttype’不存在 和 产量: 1050-表“ contenttype”已存在 问题答案: 听起来好像您有Schroedinger的桌子 … 严重的是,现在您的表可能已损坏。尝试: 如果您

  • 问题内容: 我的研究和实验还没有得到答案,所以我希望能有所帮助。 我正在修改一个应用程序的安装文件,该应用程序在以前的版本中没有我想立即添加的列。我不想手动添加列,而是要在安装文件中并且仅在表中不存在新列的情况下才添加。 该表如下创建: 如果我在create table语句下面添加以下内容,那么我不确定如果该列已经存在(可能已填充)会发生什么情况: 因此,我尝试了在某处找到的以下内容。这似乎不起作

  • null null 我没有任何可以作为主键字段。 这里的“eme_request”和“eme_attachment”是主表。 我想知道如何插入表格? 这些表(eme_request、eme_gf_relevent、eme_non_gf_relevent、eme_attachment)将在一个表单请求中插入。 所以我不了解如何在主表中生成主键以及如何将主键作为外键插入子表?

  • 问题内容: 我正在尝试执行以下查询: 但这会返回错误。基本上,如果该记录的“名称”字段已经存在于另一条记录中,我不想插入一条记录-如何检查新名称是否唯一? 问题答案: 我实际上并不建议您这样做,因为Piskvor和其他人建议的索引是一种更好的方法,但是您实际上可以做您想做的事情: 插入一条记录: 尝试再次插入相同的记录: 插入其他记录: 等等… 更新: 为了防止在两个值相等的情况下出错,您必须命名