带文本字段的Java插入查询问题
我在做GUI。它可以在用户单击按钮b1时插入数据。后端数据库有一个表,它是movies,有两列。第一列的名称是带文本字段的Java插入查询问题,java,database,swing,Java,Database,Swing,我在做GUI。它可以在用户单击按钮b1时插入数据。后端数据库有一个表,它是movies,有两列。第一列的名称是title,数据类型是varchar,第二列的名称是year,数据类型是integer。但是我不知道如何借助文本字段在程序中编写这个查询。我在查询中尝试了许多代码,但没有任何结果。 代码: 主要内容: 您有插入电影(标题,年份)值(“+t1.getText()+”)您需要两个参数,并且只发送一个 ---编辑--- 用PreparedStatement替换Statement,并将参数与se
title
,数据类型是varchar
,第二列的名称是year
,数据类型是integer
。但是我不知道如何借助文本字段在程序中编写这个查询。我在查询中尝试了许多代码,但没有任何结果。代码: 主要内容:
您有
插入电影(标题,年份)值(“+t1.getText()+”)
您需要两个参数,并且只发送一个
---编辑---
用
PreparedStatement
替换Statement
,并将参数与setInt
和setString
方法一起使用。通过发送两个参数检查以下链接是一个很好的做法,即标题和年份可以解决问题
修改代码
CreateQuery("insert into movies (title,year) values('"+t1.getText()+"',"+t2.getText()+") ");
如果年字段有任何默认值,则下面是修改后的代码
CreateQuery("insert into movies (title) values('"+t1.getText()+"') ");
单击时出现异常错误java.lang.NumberFormatException: For input string: "World"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at Queryahmad.C_03Update$1.actionPerformed(C_03Update.java:76)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
您可以通过两种方式实现这一点,第一种是您正在使用的过程,即使用createStatement 在你的情况下,你必须设置标题和年份
CreateQuery("insert into movies (title,year) values('"+t1.getText()+"', " + t2.getText() + ")");
第二种是使用准备好的报表,
方法调用
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());
}
}
发送堆栈跟踪或错误..将字符串解析为integer
integer.parseInt(t2.getText())代码>并在中使用它query@Madhan您能给我正确的parseInt代码吗?这是第二列的后端数据类型,但integervarchar值需要单引号。在这里,作为字符串返回的数字字段可以按原样传递(但它是由数字组成的字符串);int w=整数。parseInt(q);尝试{CreateQuery(“插入电影(标题,年份)值(“+t1.getText()+”,“+w+”)”);我尝试了这个方法,但在这种情况下不起作用int w=Integer.parseInt(t2.getText());//可以正常工作(或)字符串w=t2.getText();//可以正常工作是的,但如果在JText字段t1中写入值“Clockwork Orange”将要执行的查询是insert-into-movies(title,year)值('Clockwork Orange'),您需要类似于此的内容insert-into-movies(title,year)值('t1.getText()+',“+t2.getText()+”)的内容,因此您需要修改它以获得类似于此的CreateQuery(“insert-into-movies(title,year)值('t1.getText()+',+t2.getText()+)”);错误当我在t1文本字段上键入时,点击输入字符串“记录”时出现。请指定您收到的错误。您可以通过直接轻松运行查询来解决问题。首先,在控制台中输出查询,然后复制输出并直接运行。例如,System.out.println(查询);在异常发生之前。请指定您正在接收的异常。
CreateQuery("insert into movies (title,year) values('"+t1.getText()+"', " + t2.getText() + ")");
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());
}
}