L'insertion d'enregistrements dans une table MySQL à l'aide de Java

J'ai créé une base de données avec une table dans 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)
);

J'ai essayé d'insérer un enregistrement à l'aide de 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!");
}
}

La sortie s'affiche à nouveau avec succès:
L'insertion d'enregistrements dans une table MySQL à l'aide de Java

Mais lorsque je sélectionne à partir de MySQL, l'enregistrement inséré est vide:
L'insertion d'enregistrements dans une table MySQL à l'aide de Java

Pourquoi est-il de l'insertion d'un enregistrement vide?

Vous n'êtes pas à l'aide de course_*** variables dans la requête.
Vous n'êtes pas définir toutes les valeurs sur l'instruction insert. Découvrez à l'aide d'un preparedStatement avec bind variables plutôt que de faire une "chaîne" instruction insert. Cela permettra d'insérer les données et de cesser de vous faire une injection SQL questions.

OriginalL'auteur | 2013-08-16