2017-02-12 3 views
1

Я все еще новичок в этом. Но у меня возникла проблема с вставкой данных в базу данных mt. Я думаю, что есть много ошибок, происходящих в моем сценарииПодключение Java к MS Access с помощью JCreator

import java.awt.*; 
import javax.swing.*; 
import java.awt.event.*; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 

public class Student extends JFrame 
{ 
//Component's name 
private JLabel lblName,lblAge,lblGrade; 
private JTextField txtName, txtAge,txtGrade; 
private JButton btnAdd; 
String c; 
String d; 
String e; 

public void Student() 
    { 

     Connection conn = null; 
     String url = "jdbc:mysql://localhost:3306/"; 
     String dbName = "Information"; 
     String driver = "com.mysql.jdbc.Driver"; 
     String userName = "root"; 
     String password = "abcd"; 

    Container container = getContentPane(); 
    container.setLayout(new FlowLayout()); 

    lblName=new JLabel("Name: "); 
    container.add(lblName); 

    txtName=new JTextField(30); 
    container.add(txtName); 

    lblAge=new JLabel("Age: "); 
    container.add(lblAge); 

    txtAge=new JTextField(2); 
    container.add(txtAge); 

    lblGrade=new JLabel("Grade: "); 
    container.add(lblGrade); 

    txtGrade=new JTextField(1); 
    container.add(txtGrade); 

    btnAdd=new JButton("Add"); 
    container.add(btnAdd); 

    btnAdd.addActionListener(new ActionListener() 
     { 
      public void actionPerformed(ActionEvent ev) 
      { 
       c=txtName.getText(); 
       d=txtAge.getText(); 
       e=txtGrade.getText(); 
      try 
      { 
       Class.forName(driver).newInstance(); 
       conn = DriverManager.getConnection(url + dbName, userName, password); 

       PreparedStatement statement = conn.prepareStatement("INSERT INTO Information ('StudentName', 'StudentAge','Grade') VALUES ('"+c+"', '"+d+"', '"+e+"'')"); 
       statement.executeQuery(); 

      } 
       catch (Exception ex) 
      { 
       ex.printStackTrace(); 
      } 
      } 

     }); 

    setSize(300,300); 
    setVisible(true); 

} 
public static void main(String[]args) 
{ 
    Student application = new Student(); 
    application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
} 

} 

Так, может кто-нибудь помочь мне исправить то, что здесь не так? См. Снимок экрана ниже.

enter image description here

+0

пожалуйста, вы можете поместить свою ошибку я не могу увидеть изображение –

ответ

0

1-Вам не нужно использовать т '' на имя вашей колонки 'StudentName', если вам нужно, чтобы потом использовать использовать `` вместо ''

2-У вас есть проблемы в вашей запрос здесь:

...('"+c+"', '"+d+"', '"+e+"'') 

Вы можете установить два '' в конце концов, и это делает проблему.

Почему вы не используете? как это:

PreparedStatement statement = 
conn.prepareStatement("INSERT INTO Information (StudentName, StudentAge, Grade) VALUES (?, ?, ?)"); 

statement.setString(1, c); 
statement.setString(2, d); 
statement.setString(3, e); 

statement.executeQuery(); 

Вы можете узнать больше здесь о Prepared Statement doc

Смежные вопросы