/**
 * 修改学生
 */
package com.test5;
import javax.swing.*;
import java.awt.*;
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.ResultSet;import javax.swing.JDialog;public class StuUpdDialog extends JDialog implements ActionListener{
//定义我需要的swing组件
JLabel jl1,jl2,jl3,jl4,jl5,jl6;
JButton jb1,jb2;
JTextField jtf1,jtf2,jtf3,jtf4,jtf5,jtf6;
JPanel jp1,jp2,jp3;
JTable jt;
//owner它的父窗口
//title窗口名
//modal指定是模式窗口,还是非模式的窗口
//模式窗口,不允许再点别的窗口
//因为是引用传递,可以把那个行传递过来
//尽量让耦合性小,最好让函数接口与外界发生联系
public StuUpdDialog(Frame owner,String title,boolean modal, StuModel sm, int rowNums)
{
//调用父类构造方法,达到模式对话框效果
super(owner,title,modal);
jl1=new JLabel("学号");
jl2=new JLabel("姓名");
jl3=new JLabel("性别");
jl4=new JLabel("年龄");
jl5=new JLabel("籍贯");
jl6=new JLabel("系别");

jtf1=new JTextField();
//初始化数据
jtf1.setText((String)sm.getValueAt(rowNums, 0));
//让Jtf1不能修改,不能修改主键
jtf1.setEditable(false);
jtf2=new JTextField();
jtf2.setText((String)sm.getValueAt(rowNums, 1));
jtf3=new JTextField();
jtf3.setText((String)sm.getValueAt(rowNums, 2));
jtf4=new JTextField();
//java.lang.ClassCastException类型转换错误
//jtf4.setText((String)sm.getValueAt(rowNums, 3));
jtf4.setText(sm.getValueAt(rowNums, 3).toString());
jtf5=new JTextField();
jtf5.setText((String)sm.getValueAt(rowNums, 4));
jtf6=new JTextField();
jtf6.setText((String)sm.getValueAt(rowNums, 5));

jb1=new JButton("修改");
jb2=new JButton("取消");

jp1=new JPanel();
jp2=new JPanel();
jp3=new JPanel();

//设置布局
jp1.setLayout(new GridLayout(6,1));
jp2.setLayout(new GridLayout(6,1));

//添加组件
jp1.add(jl1);
jp1.add(jl2);
jp1.add(jl3);
jp1.add(jl4);
jp1.add(jl5);
jp1.add(jl6);

jp2.add(jtf1);
jp2.add(jtf2);
jp2.add(jtf3);
jp2.add(jtf4);
jp2.add(jtf5);
jp2.add(jtf6);


jp3.add(jb1);
jp3.add(jb2);

this.add(jp1,BorderLayout.WEST);
this.add(jp2,BorderLayout.CENTER);
this.add(jp3,BorderLayout.SOUTH);

jb1.addActionListener(this);
//展现
this.setSize(300,300);
this.setVisible(true);

} public void actionPerformed(ActionEvent e) {
 //TODO Auto-generated method stub
         if(e.getSource()==jb1)
         {
          //对用户点击添加按钮后的响应动作
          //连接数据库
         PreparedStatement pstmt=null;
         Connection conn=null;
         ResultSet rs=null;
         //连接数据库,判断用户是否合法
         try{
         //1.加载驱动
         Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
         //2.创建连接对象
         String url="jdbc:sqlserver://localhost:1433;databaseName=spdb1";
         //3.注册驱动城区,打开连接对象
         conn=DriverManager.getConnection(url,"guofei","123");
         //与编译语句对象         String strsql="insert into stu values( ?, ?, ?, ?, ?, ?)";
         pstmt=conn.prepareStatement(strsql);
         //给参数赋值
         pstmt.setString(1, jtf1.getText());
         pstmt.setString(2, jtf2.getText());
         pstmt.setString(3, jtf3.getText());
         pstmt.setString(4, jtf4.getText());
         pstmt.setString(5, jtf5.getText());
         pstmt.setString(6, jtf6.getText());
         //执行操作
         pstmt.executeUpdate();
         //关闭对话框,添加学生对话框
         this.dispose();
        
        
        
         }catch(Exception b){
          b.printStackTrace();
         }finally{
         //4.释放语句对象,连接对象
         try{
         if(rs!=null) rs.close();
         if(pstmt!=null) pstmt.close();
         if(conn!=null) conn.close();
         }catch(Exception b1){
         b1.printStackTrace();
         }
         }
         }

// //当用户点击添加
// else if(e.getSource()==jb2)
// {
// StuAddDialog sa=new StuAddDialog(this);
// }
}
   
}报错:一下是控制台输出的错误
00
00
com.microsoft.sqlserver.jdbc.SQLServerException: 违反了 PRIMARY KEY 约束 'PK__stu__7C8480AE'。不能在对象 'dbo.stu' 中插入重复键。
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1515)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:404)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:350)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1715)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:180)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:155)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeUpdate(SQLServerPreparedStatement.java:314)
at com.test5.StuUpdDialog.actionPerformed(StuUpdDialog.java:128)
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:6038)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5803)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component.dispatchEventImpl(Component.java:4410)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
at java.awt.Container.dispatchEventImpl(Container.java:2102)
at java.awt.Window.dispatchEventImpl(Window.java:2429)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:177)
at java.awt.Dialog$1.run(Dialog.java:1039)
at java.awt.Dialog$3.run(Dialog.java:1091)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Dialog.show(Dialog.java:1089)
at java.awt.Component.show(Component.java:1419)
at java.awt.Component.setVisible(Component.java:1372)
at java.awt.Window.setVisible(Window.java:801)
at java.awt.Dialog.setVisible(Dialog.java:979)
at com.test5.StuUpdDialog.<init>(StuUpdDialog.java:95)
at com.test5.StuManage.actionPerformed(StuManage.java:129)
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:6038)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5803)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component.dispatchEventImpl(Component.java:4410)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
at java.awt.Container.dispatchEventImpl(Container.java:2102)
at java.awt.Window.dispatchEventImpl(Window.java:2429)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)