gpt4 book ai didi

带有 TextFields 问题的 Java 插入查询

转载 作者:搜寻专家 更新时间:2023-10-30 19:48:03 24 4
gpt4 key购买 nike

我正在制作一个 GUI。当用户点击JButton b1 时可以插入数据。后端数据库有一张表是电影,有两列。第一列的名称是title,数据类型是varchar,第二列的名称是 year 其数据类型为 integer。但我不知道如何在文本字段的帮助下在程序中编写此查询。我在查询时尝试了很多代码,但没有任何反应。
代码:

public class A extends JFrame{

private JTextField t1;
private JTextField t2;
private JLabel l1;
private JLabel l2;
private JButton b1;

private Connection conn;
private Statement state;
String server = "jdbc:mysql://localhost/demo";
String user="root";
String pass="65";

public A(){
super("Query");

setLayout(null);

t1= new JTextField();
t1.setBounds(173, 152, 128, 27);
add(t1);

//for year
t2= new JTextField();
t2.setBounds(173, 105, 128, 27);
add(t2);


l1= new JLabel("title");
l1.setBounds(99, 101, 42, 37);
add(l1);

l1= new JLabel("year");
l1.setBounds(99, 148, 42, 37);
add(l1);

b1= new JButton("Insert");
b1.setBounds(50, 222, 102, 37);
add(b1);
b1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
try{

CreateQuery("insert into movies (title,year) values('"+t1.getText()+"') ");



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

setSize(450,450);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
setVisible(true);
}



public void CreateQuery(String w){
try{

Class.forName("com.mysql.jdbc.Driver");

conn=DriverManager.getConnection(server,user,pass);
state = conn.createStatement();
state.executeUpdate(w);
JOptionPane.showMessageDialog(null, "Query Executed");
}

catch(Exception e){
JOptionPane.showMessageDialog(null, e.getMessage());
}

}

}

主要内容:

public class Main {

public static void main(String[] args) {
A obj = new A();
}
}

最佳答案

您可以通过两种方式做到这一点,第一种是您正在使用的过程,即使用 createStatement

在您的情况下,您必须同时设置标题和年份。

CreateQuery("insert into movies (title,year) values('"+t1.getText()+"', " + t2.getText() + ")");

第二个是使用preparedStatement,方法调用,

CreateQuery(t1.getText(), t2.getText());

方法,

public void CreateQuery(String title, String year){
try{

Class.forName("com.mysql.jdbc.Driver");

conn=DriverManager.getConnection(server,user,pass);
PreparedStatement state = conn.prepareStatement("insert into movies (title,year) values('?', ?)");
state.setString(1, title);
state.setInt(1, new Integer(year));
state.executeUpdate();
JOptionPane.showMessageDialog(null, "Query Executed");
}

catch(Exception e){
JOptionPane.showMessageDialog(null, e.getMessage());
}

}

关于带有 TextFields 问题的 Java 插入查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31145397/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com