2017-02-12 160 views
1

我还是一个新手。但是,我在mt数据库中插入数据时遇到问题。我认为在我的脚本中发生了很多错误使用JCreator将Java连接到MS Access

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 - 你不需要T选用''你列'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