Java/Sql GUI PreparedStatement
我不明白为什么我会出错,我相信我做的一切都是正确的。我只是在尝试从combobx中取出文本时才出现错误。谁能帮我把这件事做好吗。我知道如何使用microsoft access将文本字段中的数据插入数据。但当涉及到组合框时就不是了 这些错误 java.lang.NullPointerException 在delete_me1.connection(delete_me1.java:66) 在delete_me1$2.actionPerformed(delete_me1.java:133) 位于java.awt.EventDispatchThread.run(未知源) java.lang.NullPointerException 在delete_me1.connection(delete_me1.java:90) 在delete_me1$2.actionPerformed(delete_me1.java:133) 谢谢:)Java/Sql GUI PreparedStatement,java,sql,user-interface,Java,Sql,User Interface,我不明白为什么我会出错,我相信我做的一切都是正确的。我只是在尝试从combobx中取出文本时才出现错误。谁能帮我把这件事做好吗。我知道如何使用microsoft access将文本字段中的数据插入数据。但当涉及到组合框时就不是了 这些错误 java.lang.NullPointerException 在delete_me1.connection(delete_me1.java:66) 在delete_me1$2.actionPerformed(delete_me1.java:133) 位于jav
导入java.awt.EventQueue;
公共类删除\u me1{
私有JFrame;
公共JComboBox组合框;
字符串MSAccessDriver=“sun.jdbc.odbc.JdbcOdbc.trim();
String MyDatabase=“jdbc:odbc:Driver={Microsoft Access驱动程序(*.mdb)};DBQ=c:\\db\\Database.mdb”;
连接con=null;
语句st=null;
结果集rs;
私有JTextField textField;
/**
*启动应用程序。
*/
公共静态void main(字符串[]args){
invokeLater(新的Runnable(){
公开募捐{
试一试{
delete_-me1 window=新建delete_-me1();
window.frame.setVisible(true);
}捕获(例外e){
e、 printStackTrace();
}
}
});
}
public void connection()引发异常{
/*String sql=“插入动物(名字、姓氏)值(?,)”;
PreparedStatement PreparedStatement=connection.prepareStatement(sql);
准备好的声明。固定管柱(1,动物);
预备状态设置字符串(2,动物类型);
PreparedStatemennt.executeUpdate()*/
试一试{
字符串com2=comboBox.getSelectedItem().toString();
字符串com=textField.getText();
String sql=“插入客户机(名字、姓氏)值(?,)”;
PreparedStatement PreparedStatement=con.prepareStatement(sql);
preparedStatement.setString(1,com);
编制报表。设置字符串(2,com2);
preparedStatement.executeUpdate();
类forName(MSAccessDriver);
String db=“jdbc:odbc:Food”//db=存储的数据库字符串
//在数据库中
con=DriverManager.getConnection(db);
st=con.createStatement();
st.execute(sql);
}
捕获(例外情况除外){
例如printStackTrace();
}
最后{
试一试{
圣克洛斯();
}捕获(SQLE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
试一试{
con.close();
}捕获(SQLE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
showMessageDialog(null,“保存完成成功”);
}
}
/**
*创建应用程序。
*/
公共删除_me1(){
初始化();
}
/**
*初始化框架的内容。
*/
私有void初始化(){
frame=新的JFrame();
机架立根(100450300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
最终JComboBox组合框=新JComboBox();
setModel(新的DefaultComboxModel(新字符串[]{“Dog”,“Cat”,
"牛,","羊",;
组合框.立根(57,54,245,46);
frame.getContentPane().add(组合框);
JButton btnNewButton=新JButton(“新按钮”);
addActionListener(新ActionListener(){
已执行的公共无效操作(操作事件arg0){
试一试{
连接();
}捕获(例外e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
});
btnNewButton.收进边界(57,143,89,23);
frame.getContentPane().add(btnNewButton);
textField=新的JTextField();
textField.setBounds(172、144、118、20);
frame.getContentPane().add(textField);
textField.setColumns(10);
}
}
换句话说,您的问题是“什么是空指针异常?”是指当程序中某个子例程的前提条件假设某个变量在使用该变量时不为空时发生的情况
现在阅读您的错误,“delete_me1.connection”是一个空值,不应该有空值。
“sun.jdbc.odbc.JdbcOdbc.trim()代码>为什么?还有,什么错误?在使用itI did“Connection con=null”之前,必须初始化“con”
import java.awt.EventQueue;
public class delete_me1 {
private JFrame frame;
public JComboBox<?> comboBox;
String MSAccessDriver = "sun.jdbc.odbc.JdbcOdbc ".trim();
String MyDatabase = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=c:\\db\\Database.mdb";
Connection con = null;
Statement st = null;
ResultSet rs;
private JTextField textField;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
delete_me1 window = new delete_me1();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public void connection() throws Exception {
/* String sql = "INSERT INTO animal (first_name, last_name) VALUES(?,?)";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1,animal);
preparedStatemnt.setString(2,animalType);
preparedStatemnt.executeUpdate();*/
try {
String com2 = comboBox.getSelectedItem().toString();
String com = textField.getText();
String sql = "INSERT INTO client (first_name, last_name) VALUES (?,?)";
PreparedStatement preparedStatement = con.prepareStatement(sql);
preparedStatement.setString(1,com);
preparedStatement.setString(2,com2);
preparedStatement.executeUpdate();
Class.forName(MSAccessDriver);
String db = "jdbc:odbc:Food"; // db = database string stored
// in the database
con = DriverManager.getConnection(db);
st = con.createStatement();
st.execute(sql);
}
catch (Exception ex) {
ex.printStackTrace();
}
finally {
try {
st.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
JOptionPane.showMessageDialog(null, "Save Complete Successfully");
}
}
/**
* Create the application.
*/
public delete_me1() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
final JComboBox comboBox = new JComboBox();
comboBox.setModel(new DefaultComboBoxModel(new String[] { "Dog", "Cat",
"Cow", "Sheep" }));
comboBox.setBounds(57, 54, 245, 46);
frame.getContentPane().add(comboBox);
JButton btnNewButton = new JButton("New button");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
try {
connection();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
btnNewButton.setBounds(57, 143, 89, 23);
frame.getContentPane().add(btnNewButton);
textField = new JTextField();
textField.setBounds(172, 144, 118, 20);
frame.getContentPane().add(textField);
textField.setColumns(10);
}
}