当前位置: 首页 > 面试题库 >

使用Java将记录插入MySQL表

谢鸿羲
2023-03-14
问题内容

我在MySQL中用一个表创建了一个数据库:

CREATE DATABASE iac_enrollment_system;

USE iac_enrollment_system;

CREATE TABLE course(
    course_code CHAR(7),
    course_desc VARCHAR(255) NOT NULL,
    course_chair VARCHAR(255),
    PRIMARY KEY(course_code)
);

我尝试使用Java插入记录:

// STEP 1: Import required packages
import java.sql.*;
import java.util.*;

public class SQLInsert {
// JDBC driver name and database URL
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";  
static final String DB_URL = "jdbc:mysql://localhost:3306/iac_enrollment_system";

// Database credentials
static final String USER = "root";
static final String PASS = "1234";

public static void main(String[] args) {
    Connection conn = null;
    Statement stmt = null;
    Scanner scn = new Scanner(System.in);
    String course_code = null, course_desc = null, course_chair = null;

    try {
        // STEP 2: Register JDBC driver
        Class.forName("com.mysql.jdbc.Driver");

        // STEP 3: Open a connection
        System.out.print("\nConnecting to database...");
        conn = DriverManager.getConnection(DB_URL, USER, PASS);
        System.out.println(" SUCCESS!\n");

        // STEP 4: Ask for user input
        System.out.print("Enter course code: ");
        course_code = scn.nextLine();

        System.out.print("Enter course description: ");
        course_desc = scn.nextLine();

        System.out.print("Enter course chair: ");
        course_chair = scn.nextLine();

        // STEP 5: Excute query
        System.out.print("\nInserting records into table...");
        stmt = conn.createStatement();

        String sql = "INSERT INTO course " +
            "VALUES (course_code, course_desc, course_chair)";
        stmt.executeUpdate(sql);

        System.out.println(" SUCCESS!\n");

    } catch(SQLException se) {
        se.printStackTrace();
    } catch(Exception e) {
        e.printStackTrace();
    } finally {
        try {
            if(stmt != null)
                conn.close();
        } catch(SQLException se) {
        }
        try {
            if(conn != null)
                conn.close();
        } catch(SQLException se) {
            se.printStackTrace();
        }
    }
    System.out.println("Thank you for your patronage!");
  }
}

输出似乎成功返回: insert_success

但是,当我从MySQL中选择时,插入的记录为空:
mysql_blank_record

为什么插入空白记录?


问题答案:

不,这是行不通的(不适用于真实数据):

String sql = "INSERT INTO course " +
        "VALUES (course_code, course_desc, course_chair)";
    stmt.executeUpdate(sql);

更改为:

String sql = "INSERT INTO course (course_code, course_desc, course_chair)" +
        "VALUES (?, ?, ?)";

使用该sql创建一个PreparedStatment,并使用索引插入值:

PreparedStatement preparedStatement = conn.prepareStatement(sql);
preparedStatement.setString(1, "Test");
preparedStatement.setString(2, "Test2");
preparedStatement.setString(3, "Test3");
preparedStatement.executeUpdate();


 类似资料:
  • 我试图使用spring rest API并将结果存储到一个临时表中。以下是我的尝试。我对java和spring很陌生,请原谅我的错误。我的staging表名为“greetingsstaging”。我是spring开发的新手,请帮助理解这个问题。我正在使用JPA和spring。 这是主要应用程序。 这是我的服务。 这是存储库界面。 这是我的pojo课。 我收到以下例外。 在类路径资源中定义名称为“请

  • 问题内容: 我想使用Java一次将多行插入MySQL表中。行数是动态的。过去我在做… for (String element : array) { myStatement.setString(1, element[0]); myStatement.setString(2, element[1]); } 我想对此进行优化,以使用MySQL支持的语法: INSERT INTO table (col1,

  • 问题内容: 我正在尝试使用Java将数据插入mysql数据库。我正在使用以下代码从数据库中获取数据,并且工作正常。 为了插入数据,我尝试了上面的代码,仅替换了 与 但是它显示出一些错误。您能告诉我代码中的问题在哪里吗? 谢谢 :) 问题答案: 如果您的主键是自动递增,则可以尝试此操作;

  • 问题内容: 设想 我需要每天通过电子表格(唯一可用的选项)更新SQL 2008数据库。该格式非常基本,但是可能有数百万条记录。Column1和Column3将具有许多预定义的重复值,这些值已经提取到单独的表中。 电子表格样本 数据库设置 我的数据库设置了三个单独的表: 问题 如何编写SQL来插入与查找表中的信息匹配的记录?我该怎么办: 对此: 问题答案: 您可以尝试这样的事情: 没有任何容错功能,

  • 问题内容: 我不知道为什么我对此查询感到困惑。 我有两个表:带有记录和带有记录。两个表都需要包含相同的数据,但是存在一些不匹配的情况。 我需要编写一个mysql查询以插入从到的丢失记录。 最后,两者和应该相同。 我不想先截断所有条目,然后再从另一个表中插入。因此,请提供任何帮助。 谢谢你。 问题答案: 也可以使用它。这将避免像John Woo的回答那样避免子查询的开销(当系统可能为外部查询的 每条

  • 问题内容: 我在Python中有一个JSON对象。我正在使用Python DB-API和SimpleJson。我正在尝试将json插入MySQL表中。 目前出现错误,我相信这是由于JSON对象中的单引号引起的。 如何使用Python将JSON对象插入MySQL? 这是我收到的错误消息: 另一个错误供参考 这是我正在使用http://pastebin.com/q5QSfYLa的代码的链接 问题答案: