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.SQLException;
@SuppressWarnings("serial")
public class DeleteFrame<mainWindow> extends JFrame implements ActionListener{
JButton yesB,cancelB;
JLabel label1,label2;
JTextField text1;
String sid;
public DeleteFrame(){
Container c=this.getContentPane();
c.setLayout(new GridLayout(3,1));
c.setFont(new Font("true",Font.TRUETYPE_FONT,13));
JPanel p1=new JPanel();
JPanel p2=new JPanel();
JLabel label1=new JLabel("删除学生信息",SwingConstants.CENTER);
label1.setFont(new Font("TRUE",Font.TRUETYPE_FONT,20));
label1.setForeground(Color.blue);
c.add(label1);
JLabel label2=new JLabel("请输入学号");
text1=new JTextField(10);
p1.add(label2);
p1.add(text1);
c.add(p1);
yesB=new JButton("确定");
cancelB=new JButton("退出");
p2.add(yesB);
p2.add(cancelB);
c.add(p2);
yesB.addActionListener(this);
cancelB.addActionListener(this);
this.setSize(400,300);
this.setTitle("删除学生信息");
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e){
if (e.getSource()==yesB){
del();
}
if (e.getSource()==cancelB){
shutDown();
}
}
private void del(){
try{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
Connection con = DriverManager.getConnection
("jdbc:microsoft:sqlserver://127.0.0.1:1433","kelly","123");
String sql="DELETE FROM mytable WHERE sid=' "+sid+"'";
PreparedStatement ps=con.prepareStatement(sql);
ps.executeUpdate(sql);
con.close();
JOptionPane.showMessageDialog(this,"删除成功!");
}
catch(SQLException e){
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
@SuppressWarnings("unchecked")
private void shutDown(){
DeleteFrame f=new DeleteFrame();
f.dispose();
}
@SuppressWarnings("unchecked")
public static void main(String[]args){
new DeleteFrame();
}
}
private void shutDown()此方法是想实现关闭当前窗口的功能,不知道代码该怎么写,还有private void del()方法是想删除数据库中的某些记录,不知道错在哪里,请指教,非常感谢......
import javax.swing.*;
import java.awt.event.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
@SuppressWarnings("serial")
public class DeleteFrame<mainWindow> extends JFrame implements ActionListener{
JButton yesB,cancelB;
JLabel label1,label2;
JTextField text1;
String sid;
public DeleteFrame(){
Container c=this.getContentPane();
c.setLayout(new GridLayout(3,1));
c.setFont(new Font("true",Font.TRUETYPE_FONT,13));
JPanel p1=new JPanel();
JPanel p2=new JPanel();
JLabel label1=new JLabel("删除学生信息",SwingConstants.CENTER);
label1.setFont(new Font("TRUE",Font.TRUETYPE_FONT,20));
label1.setForeground(Color.blue);
c.add(label1);
JLabel label2=new JLabel("请输入学号");
text1=new JTextField(10);
p1.add(label2);
p1.add(text1);
c.add(p1);
yesB=new JButton("确定");
cancelB=new JButton("退出");
p2.add(yesB);
p2.add(cancelB);
c.add(p2);
yesB.addActionListener(this);
cancelB.addActionListener(this);
this.setSize(400,300);
this.setTitle("删除学生信息");
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e){
if (e.getSource()==yesB){
del();
}
if (e.getSource()==cancelB){
shutDown();
}
}
private void del(){
try{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
Connection con = DriverManager.getConnection
("jdbc:microsoft:sqlserver://127.0.0.1:1433","kelly","123");
String sql="DELETE FROM mytable WHERE sid=' "+sid+"'";
PreparedStatement ps=con.prepareStatement(sql);
ps.executeUpdate(sql);
con.close();
JOptionPane.showMessageDialog(this,"删除成功!");
}
catch(SQLException e){
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
@SuppressWarnings("unchecked")
private void shutDown(){
DeleteFrame f=new DeleteFrame();
f.dispose();
}
@SuppressWarnings("unchecked")
public static void main(String[]args){
new DeleteFrame();
}
}
private void shutDown()此方法是想实现关闭当前窗口的功能,不知道代码该怎么写,还有private void del()方法是想删除数据库中的某些记录,不知道错在哪里,请指教,非常感谢......
[Microsoft][SQLServer 2000 Driver for JDBC]Invalid call Statement method: {0}
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.base.BasePreparedStatement.executeUpdate(Unknown Source)
at DeleteFrame.del(DeleteFrame.java:60)
at DeleteFrame.actionPerformed(DeleteFrame.java:47)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6216)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5981)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4583)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4413)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4556)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4220)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4150)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2475)
at java.awt.Component.dispatchEvent(Component.java:4413)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
直接调用 dispose方法ps.executeUpdate(sql);去掉sql参数
是那句?
[Microsoft][SQLServer 2000 Driver for JDBC]Invalid call Statement method: {0}
好像sql语句有问题
String sql="DELETE FROM mytable WHERE sid=' "+sid+"'";
改为:String sql="DELETE FROM mytable WHERE sid='"+sid+"'";
sid是字符串吗???
这个肯定不要参数的
try{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
Connection con = DriverManager.getConnection
("jdbc:microsoft:sqlserver://127.0.0.1:1433","kelly","123");
String sql="DELETE FROM mytable1 WHERE sid='"+sid+"'";
PreparedStatement ps=con.prepareStatement(sql);
ps.executeUpdate();
con.close();
JOptionPane.showMessageDialog(this,"删除成功!");
}
catch(SQLException e){
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}用这些语句删除数据库table1表中的某条数据为什么删不了呢,高手指教,非常感谢……
占位符应该用ps.setString(占位符index,值);来赋值的
ps.executeUpdate();中是没有sql的
private void del(){
try{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
Connection con = DriverManager.getConnection
("jdbc:microsoft:sqlserver://127.0.0.1:1433","kelly","123");
String sql="DELETE FROM mytable WHERE sid=?";
PreparedStatement ps=con.prepareStatement(sql);
ps.setString(1,sid);
int count = ps.executeUpdate();
con.close();
if(count > 0){
JOptionPane.showMessageDialog(this,"删除成功!");
}else{
JOptionPane.showMessageDialog(this,"删除失败!"); }
}
catch(SQLException e){
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
你应该是拿到当前JFrame的实例再调用他的dispose() 方法才对啊代码如下
@SuppressWarnings("unchecked")
private void shutDown(){
// DeleteFrame f=new DeleteFrame();
this.dispose();
}
ps:关闭数据库要注意,关闭时有先后顺序的,先关闭statement然后关闭connection