JDBC ODBC删除查询错误问题?

时间:2013-06-24 05:34:44

标签: java swing ms-access jdbc-odbc

我想从数据库中删除客户的特定新闻纸而不是客户的全部细节? 一个客户在他们的记录中有多张纸,但我想从多张纸中删除任何纸张。 我输入客户ID并选择我要删除的纸张 感谢先进的帮助...

enter code here:   
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import javax.swing.*;

public abstract class delete_paper extends JFrame implements ActionListener
{
JTextField textFieldId;
JLabel l1;
JLabel l3;
JLabel l5;
JLabel l6;
    JComboBox combo;
    String course[] = {"Navakal","SandhyaKal","Pudhari",
      "MidDay","Inqlab","BusinessLine","MumbaiSamachar",
       "GujrajSamachar","KarnatakMalla","Vartahar","PunyaNagari"};
JButton b2;
Container c = getContentPane();
delete_paper()
{
    super("Shree DattaDigambar Samarth");
    setBounds(140,250,777,555);
    c.setLayout(null);
    textFieldId = new JTextField();           
    l1 = new JLabel("New Customer Entry");
    l3 = new JLabel("Customer Name");       
    l5 = new JLabel("Paper");
            combo = new JComboBox(course);
    l1.setBounds(10,10,340,20);
    l3.setBounds(110,20,140,70);
    l5.setBounds(400,50,140,20);        
    textFieldId.setBounds(10,70,70,20);
            combo.setBounds(400,70,130,20);              
    b2 = new JButton("Ok");     
    b2.setBounds(10,160,50,20);      
            c.add(combo);       
    c.add(b2);
    c.add(l1);
    c.add(l3);
    c.add(l5);
    c.add(textFieldId);            
            setVisible(true);
    setDefaultCloseOperation(EXIT_ON_CLOSE);                
            b2.addActionListener(this);
}
    public static void main(String[] args) 
    {
        delete_paper ap=new delete_paper() {};
    }
     public void actionPerformed(ActionEvent e)
        {

            System.out.println("You clicked the button");                
            if(e.getSource()==b2)
            {
                try 
                {
                    Connection con;
                    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
                    con = DriverManager.getConnection("jdbc:odbc:devendra");
                    try 
                    {

                        java.sql.Statement st = con.createStatement();
                        PreparedStatement ps = con.prepareStatement("delete 
                        from   Customer where Customer_Id = ? and Paper_Name in (?) ");
                        ps.setString(1,textFieldId.getText());
                        ps.setString(4,combo.getSelectedItem().toString());
                        ps.executeUpdate();
                        JOptionPane.showMessageDialog(null, 
                       "You successfully Enter the Entry");
                    } 
                    catch (SQLException s) 
                    {
                        System.out.println("SQL code does not execute.");
                        JOptionPane.showMessageDialog(null,"Please Enter 
                        the Detail Correctly");
                    }
                } 
                catch (ClassNotFoundException | SQLException ee) 
                {
                    System.out.println("Error:connection not created");
                    JOptionPane.showMessageDialog(null,"Please 
                    Enter the Detail Correctly");
                }
            }
        }
         }

1 个答案:

答案 0 :(得分:0)

在Prepared语句中设置值时,不需要使用表列的索引。它只是指数?设置:

使用

                ps.setString(2,combo.getSelectedItem().toString());

而不是

                ps.setString(4,combo.getSelectedItem().toString());