首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用JCreator将Java连接到MS Access

使用JCreator将Java连接到MS Access
EN

Stack Overflow用户
提问于 2017-02-12 16:15:35
回答 1查看 235关注 0票数 1

我还是个新手。但是,我在mt数据库中插入数据时遇到了问题。我认为我的脚本中有很多错误

代码语言:javascript
复制
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);
}

}

那么,有人能帮我解决这里的问题吗?请参见下面的屏幕截图以查看输出。

EN

回答 1

Stack Overflow用户

发布于 2017-02-12 16:23:38

1-您不需要在列'StudentName'的名称中使用'',如果需要,可以使用``代替''

2-您在查询中遇到问题:

代码语言:javascript
复制
...('"+c+"', '"+d+"', '"+e+"'')

你最后设置了两个'',这就产生了一个问题。

你为什么不使用?如下所示:

代码语言:javascript
复制
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的更多信息

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42185515

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档