1 import java.awt.BorderLayout; 2 import java.awt.Color; 3 import java.awt.Frame; 4 import java.awt.event.ActionEvent; 5 import java.awt.event.ActionListener; 6 import java.io.UnsupportedEncodingException; 7 import java.sql.Connection; 8 import java.sql.DriverManager; 9 import java.sql.PreparedStatement; 10 import java.sql.ResultSet; 11 import java.sql.SQLException; 12 import java.util.Vector; 13 14 import javax.swing.Box; 15 import javax.swing.ButtonGroup; 16 import javax.swing.JButton; 17 import javax.swing.JDialog; 18 import javax.swing.JFrame; 19 import javax.swing.JLabel; 20 import javax.swing.JOptionPane; 21 import javax.swing.JPanel; 22 import javax.swing.JRadioButton; 23 import javax.swing.JScrollPane; 24 import javax.swing.JTable; 25 import javax.swing.JTextField; 26 import javax.swing.plaf.OptionPaneUI; 27 import javax.swing.table.AbstractTableModel; 28 29 /** 30 * @author Administrator mini版学生管理系统 实现: crud所有功能 31 */ 32 33 public class Demo_4 { 34 35 /** 36 * @param args 37 * 作者: 龚细军 date: 2014/11/23 38 * 完成时间: 2014/11/25/ 39 */ 40 41 public static void main(String args[]) { 42 // 创建一个面板对象 43 MyJFrame mf = new MyJFrame(); 44 } 45 } 46 47 // 定义一个我自己的主界面 48 class MyJFrame extends JFrame implements ActionListener { 49 50 JTable jt; 51 MyJTable mjt; 52 // 必要地分布板块 53 JPanel jpup, jpdown, jpcenter; 54 // 实现数据的 增删查改即crud操作 55 JButton[] button = new JButton[4]; 56 // 用来辅助查找模块的框框 57 JTextField text; 58 59 JScrollPane jsp = null; 60 61 /* 62 * 构造函数 功能: 实现窗口的初始化 63 */ 64 MyJFrame() { 65 mjt = new MyJTable(); 66 jt = new JTable(mjt); 67 // jt.setModel(mjt); 68 jpup = new JPanel(); 69 jpdown = new JPanel(); 70 jpcenter = new JPanel(); 71 text = new JTextField(14); 72 button[0] = new JButton(" 查询 "); 73 button[1] = new JButton(" 添加 "); 74 button[2] = new JButton(" 修改 "); 75 button[3] = new JButton(" 删除 "); 76 for (int i = 0; i < 4; i++) 77 button[i].addActionListener(this); 78 jpup.add(new JLabel("用户信息")); 79 jpup.add(text); 80 jpup.add(button[0]); 81 for (int i = 1; i < 4; i++) 82 jpdown.add(button[i]); 83 jt.setBackground(Color.CYAN); 84 jsp = new JScrollPane(jt); 85 jpcenter.add(jsp); 86 // 设置一些布局 borderLaRyou 87 this.add(jpup, BorderLayout.NORTH); 88 this.add(jpcenter, BorderLayout.CENTER); 89 this.add(jpdown, BorderLayout.SOUTH); 90 // 设置窗口的标题 91 this.setTitle("mini版的学生管理系统"); 92 // 设置窗口的尺寸 93 this.setSize(500, 300); 94 // 窗口的尺寸不可改变 95 // this.setResizable(false); 96 // 设置窗口是否可见 97 this.setVisible(true); 98 // 设置窗口的注销模式 99 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 100 } 101 102 @Override 103 public void actionPerformed(ActionEvent e) { 104 // TODO Auto-generated method stub 105 int i = 0; 106 for (i = 0; i < 4; i++) 107 if (e.getSource() == button[i]) 108 break; 109 String cmd = text.getText().toString().trim(); 110 switch (i) { 111 // 查询 112 case 0: 113 if (cmd.isEmpty()) { 114 JOptionPane.showMessageDialog(button[0], "请输入用户名"); 115 mjt = new MyJTable(); 116 } else 117 mjt = new MyJTable(cmd); 118 jt.setModel(mjt); 119 break; 120 // 添加 121 case 1: 122 AddJFrame myAdd = new AddJFrame(this, true); 123 mjt = new MyJTable(); 124 jt.setModel(mjt); 125 break; 126 // 修改 127 case 2: 128 // 需要得到我们点中的行列号 129 int rownum = this.jt.getSelectedRow(); 130 if (-1 == rownum) { 131 JOptionPane.showMessageDialog(this, "请选中你要修改人"); 132 return; 133 } else { 134 String name = (String) mjt.getValueAt(rownum, 0); 135 UpdataJFrame Uj = new UpdataJFrame(this, true, name); 136 mjt = new MyJTable(); 137 jt.setModel(mjt); 138 } 139 break; 140 // 删除 141 case 3: 142 int row = this.jt.getSelectedRow(); 143 if (-1 == row) { 144 JOptionPane.showMessageDialog(this, "请选中你要修改人"); 145 return; 146 } else { 147 String name = (String) mjt.getValueAt(row, 1); 148 Delete det = new Delete(this, name.trim(), true); 149 } 150 mjt = new MyJTable(); 151 jt.setModel(mjt); 152 break; 153 // 啥也不干 154 default: 155 156 break; 157 } 158 } 159 160 } 161 162 // 定义一个自己的table类 163 class MyJTable extends AbstractTableModel { 164 165 // sql的几个变量 166 Connection ct = null; 167 PreparedStatement ps = null; 168 ResultSet rs = null; 169 Vector rowdata, colName; 170 171 // 非带参数的构造函数,用于初始化 172 MyJTable() { 173 this.func("", false); 174 } 175 176 // 带参数的构造函数,用于查询 177 MyJTable(String name) { 178 this.func(name, true); 179 }; 180 181 public void func(String name, boolean tag) { 182 String sql; 183 try { 184 // 加载上jdbc_odbc驱动 185 Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); 186 // 连接sql 187 ct = DriverManager.getConnection( 188 "jdbc:microsoft:sqlserver://localhost:1434;databaseName=Demo_1", 189 "sa", "869261636123"); 190 if (!tag) { 191 sql = new String("select * from stu"); 192 ps = ct.prepareStatement(sql); 193 } else { 194 sql = new String("Select * from Stu where Stuname=?"); 195 ps = ct.prepareStatement(sql); 196 ps.setString(1, name); 197 } 198 rs = ps.executeQuery(); 199 /* 200 * 设置表单的属性 201 */ 202 colName = new Vector(); 203 rowdata = new Vector(); 204 String[] ss = { "学号", "名字", "性别", "年龄", "家庭地址", "系别" }; 205 for (int i = 0; i < 6; i++) 206 colName.add(ss[i]); 207 while (rs.next()) { 208 Vector hang = new Vector(); 209 for (int i = 1; i <= 6; i++) { 210 if (4 == i) 211 hang.add(rs.getInt(i)); 212 else { 213 String st = new String( 214 (rs.getString(i)).getBytes("gbk"), "gb2312"); 215 hang.add(st); 216 } 217 } 218 rowdata.add(hang); 219 } 220 } catch (Exception e) { 221 // TODO Auto-generated catch block 222 e.printStackTrace(); 223 } finally { 224 // 关闭一些窗口 225 try { 226 if (rs != null) 227 rs.close(); 228 if (ps != null) 229 ps.close(); 230 if (ct != null) 231 ct.close(); 232 } catch (SQLException e) { 233 // TODO Auto-generated catch block 234 e.printStackTrace(); 235 } 236 } 237 } 238 239 // 返回它的行数 240 @Override 241 public int getRowCount() { 242 // TODO Auto-generated method stub 243 return this.rowdata.size(); 244 } 245 246 // 返回它的列数 247 @Override 248 public int getColumnCount() { 249 // TODO Auto-generated method stub 250 return this.colName.size(); 251 } 252 253 // 返回该表单的内容 254 @Override 255 public Object getValueAt(int rowIndex, int columnIndex) { 256 // TODO Auto-generated method stub 257 return ((Vector) this.rowdata.get(rowIndex)).get(columnIndex); 258 } 259 260 @Override 261 public String getColumnName(int column) { 262 // TODO Auto-generated method stub 263 return (String) this.colName.get(column); 264 } 265 } 266 267 // 定义一个添加数据的界面 268 class AddJFrame extends JDialog implements ActionListener { 269 270 // 填写信息的空格 271 private String sex = null; 272 JTextField[] jt = new JTextField[5]; 273 JButton[] jb = new JButton[2]; 274 // 单选按钮 275 JRadioButton[] jradio = new JRadioButton[2]; 276 // 组合单选按钮 277 ButtonGroup group; 278 // 用于设置 盒式布局 BoxLayout 279 Box[] mybox = new Box[4]; 280 JPanel jp, jp1; 281 // SQL几个常用的变量类型 282 Connection ct = null; 283 PreparedStatement ps = null; 284 285 public AddJFrame(Frame Father, boolean Model) { 286 // 采用模式对话框 287 super(Father, Model); 288 for (int i = 0; i < 5; i++) 289 jt[i] = new JTextField(10); 290 jb[0] = new JButton("确认"); 291 jb[0].addActionListener(this); 292 jb[1] = new JButton("取消"); 293 jb[1].addActionListener(this); 294 jradio[0] = new JRadioButton("男"); 295 jradio[0].addActionListener(this); 296 jradio[1] = new JRadioButton("女"); 297 jradio[1].addActionListener(this); 298 // 设置水平 299 mybox[0] = Box.createVerticalBox(); 300 mybox[0].add(Box.createVerticalStrut(15)); 301 mybox[0].add(new JLabel("学号:")); 302 mybox[0].add(Box.createVerticalStrut(10)); 303 mybox[0].add(new JLabel("名字:")); 304 mybox[0].add(Box.createVerticalStrut(20)); 305 mybox[0].add(new JLabel("性别:")); 306 mybox[0].add(Box.createVerticalStrut(25)); 307 mybox[0].add(new JLabel("年龄:")); 308 mybox[0].add(Box.createVerticalStrut(10)); 309 mybox[0].add(new JLabel("家庭住址:")); 310 mybox[0].add(Box.createVerticalStrut(10)); 311 mybox[0].add(new JLabel("系别:")); 312 mybox[0].add(Box.createVerticalStrut(10)); 313 // 设置另一边的水平 314 mybox[1] = Box.createVerticalBox(); 315 mybox[1].add(Box.createVerticalStrut(18)); 316 mybox[1].add(jt[0]); 317 mybox[1].add(Box.createVerticalStrut(8)); 318 mybox[1].add(jt[1]); 319 mybox[1].add(Box.createVerticalStrut(8)); 320 jp = new JPanel(); 321 // 单选群 322 group = new ButtonGroup(); 323 group.add(jradio[0]); 324 group.add(jradio[1]); 325 jp.add(jradio[0]); 326 jp.add(jradio[1]); 327 mybox[1].add(jp); 328 /* 329 * group =new ButtonGroup(); group.add(jradio[0]); group.add(jradio[1]); 330 * mybox[1].add(group); 此处需要改变的 东西,改成combox来进行,或者直接改成一样的文本框也许 331 */ 332 mybox[1].add(Box.createVerticalStrut(5)); 333 mybox[1].add(jt[2]); 334 mybox[1].add(Box.createVerticalStrut(8)); 335 mybox[1].add(jt[3]); 336 mybox[1].add(Box.createVerticalStrut(8)); 337 mybox[1].add(jt[4]); 338 mybox[1].add(Box.createVerticalStrut(8)); 339 // 按钮部分 340 jp1 = new JPanel(); 341 jp1.add(jb[0], BorderLayout.EAST); 342 jp1.add(jb[1], BorderLayout.WEST); 343 mybox[2] = Box.createHorizontalBox(); 344 mybox[2].add(mybox[0]); 345 mybox[2].add(Box.createHorizontalStrut(10)); 346 mybox[2].add(mybox[1]); 347 this.add(mybox[2], BorderLayout.NORTH); 348 this.add(jp1, BorderLayout.SOUTH); 349 init(); 350 } 351 352 // 显示板块部分 353 public void init() { 354 this.setTitle("个人信息板块"); 355 this.setBackground(Color.magenta); 356 this.setBounds(400, 300, 300, 300); 357 this.setVisible(true); 358 // this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 359 } 360 361 @Override 362 public void actionPerformed(ActionEvent e) { 363 // TODO Auto-generated method stub 364 // 将数据写入数据库 365 if (e.getSource() == jb[0]) { 366 // 对写入的数据进行处理 367 try { 368 369 Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); 370 ct = DriverManager 371 .getConnection( 372 "jdbc:microsoft:sqlserver://localhost:1434;databaseName=Demo_1", 373 "sa", "869261636123"); 374 ps = ct.prepareStatement("insert into stu values(?,?,?,?,?,?)"); 375 for (int i = 1, j = 0; i <= 6; i++) { 376 if (3 == i) { 377 // 去掉多余的空格,但是这里存在一个小bug(合理的处理为正则表达式) 378 ps.setString(i, this.getSex().trim()); 379 // ps.setInt(i,); 380 } else if (4 == i) { 381 String tem = jt[j].getText().toString().trim(); 382 int value = Integer.valueOf(tem).intValue(); 383 ps.setInt(i, value); 384 ++j; 385 } else { 386 ps.setString(i, jt[j].getText().toString().trim()); 387 ++j; 388 } 389 } 390 int i = ps.executeUpdate(); 391 392 if (1 == i) 393 JOptionPane.showMessageDialog(this, "添加成功!"); 394 else 395 JOptionPane.showMessageDialog(this, "添加失败!"); 396 397 } catch (Exception e1) { 398 // TODO Auto-generated catch block 399 e1.printStackTrace(); 400 } finally { 401 // 关闭数据库的一些调用函数 402 try { 403 if (ps != null) 404 ps.close(); 405 if (ct != null) 406 ct.close(); 407 } catch (SQLException e1) { 408 // TODO Auto-generated catch block 409 e1.printStackTrace(); 410 } 411 } 412 this.dispose(); 413 } else if (e.getSource() == jb[0]) 414 // 释放点该窗口, 退出该版面 415 this.dispose(); 416 else if (jradio[0].isSelected()) { 417 // 将名字改为男 418 this.setSex("男"); 419 } else if (jradio[1].isSelected()) { 420 // 将名字改为女 421 this.setSex("女"); 422 } 423 } 424 425 public String getSex() { 426 return this.sex; 427 } 428 429 public void setSex(String sex) { 430 this.sex = sex; 431 } 432 433 } 434 435 // 定义一个修改数据的界面 436 class UpdataJFrame extends JDialog implements ActionListener { 437 438 // 填写信息的空格 439 private String sex = null; 440 JTextField[] jt = new JTextField[5]; 441 JButton[] jb = new JButton[2]; 442 // 单选按钮 443 JRadioButton[] jradio = new JRadioButton[2]; 444 // 组合单选按钮 445 ButtonGroup group; 446 // 用于设置 盒式布局 BoxLayout 447 Box[] mybox = new Box[4]; 448 JPanel jp, jp1; 449 // SQL几个常用的变量类型 450 Connection ct = null; 451 PreparedStatement ps = null; 452 453 public UpdataJFrame(Frame Father, boolean Model, String name) { 454 // 采用模式对话框 455 super(Father, Model); 456 for (int i = 0; i < 5; i++) 457 jt[i] = new JTextField(10); 458 // 设置为仅仅读取 459 jt[0].setEditable(false); 460 // 下方的几个按钮 461 jb[0] = new JButton("确认"); 462 jb[0].addActionListener(this); 463 jb[1] = new JButton("取消"); 464 jb[1].addActionListener(this); 465 jradio[0] = new JRadioButton("男"); 466 jradio[0].addActionListener(this); 467 jradio[1] = new JRadioButton("女"); 468 jradio[1].addActionListener(this); 469 // 设置水平 470 mybox[0] = Box.createVerticalBox(); 471 mybox[0].add(Box.createVerticalStrut(15)); 472 mybox[0].add(new JLabel("学号:")); 473 mybox[0].add(Box.createVerticalStrut(10)); 474 mybox[0].add(new JLabel("名字:")); 475 mybox[0].add(Box.createVerticalStrut(20)); 476 mybox[0].add(new JLabel("性别:")); 477 mybox[0].add(Box.createVerticalStrut(25)); 478 mybox[0].add(new JLabel("年龄:")); 479 mybox[0].add(Box.createVerticalStrut(10)); 480 mybox[0].add(new JLabel("家庭住址:")); 481 mybox[0].add(Box.createVerticalStrut(10)); 482 mybox[0].add(new JLabel("系别:")); 483 mybox[0].add(Box.createVerticalStrut(10)); 484 // 设置另一边的水平 485 mybox[1] = Box.createVerticalBox(); 486 mybox[1].add(Box.createVerticalStrut(18)); 487 mybox[1].add(jt[0]); 488 mybox[1].add(Box.createVerticalStrut(8)); 489 mybox[1].add(jt[1]); 490 mybox[1].add(Box.createVerticalStrut(8)); 491 jp = new JPanel(); 492 // 单选群 493 group = new ButtonGroup(); 494 group.add(jradio[0]); 495 group.add(jradio[1]); 496 jp.add(jradio[0]); 497 jp.add(jradio[1]); 498 mybox[1].add(jp); 499 500 /* 501 * group =new ButtonGroup(); group.add(jradio[0]); group.add(jradio[1]); 502 * mybox[1].add(group); 此处需要改变的 东西,改成combox来进行,或者直接改成一样的文本框也许 503 */ 504 mybox[1].add(Box.createVerticalStrut(5)); 505 mybox[1].add(jt[2]); 506 mybox[1].add(Box.createVerticalStrut(8)); 507 mybox[1].add(jt[3]); 508 mybox[1].add(Box.createVerticalStrut(8)); 509 mybox[1].add(jt[4]); 510 mybox[1].add(Box.createVerticalStrut(8)); 511 512 // 按钮部分 513 jp1 = new JPanel(); 514 jp1.add(jb[0], BorderLayout.EAST); 515 jp1.add(jb[1], BorderLayout.WEST); 516 mybox[2] = Box.createHorizontalBox(); 517 mybox[2].add(mybox[0]); 518 mybox[2].add(Box.createHorizontalStrut(10)); 519 mybox[2].add(mybox[1]); 520 Connect(name); 521 this.add(mybox[2], BorderLayout.NORTH); 522 this.add(jp1, BorderLayout.SOUTH); 523 init(); 524 } 525 526 // 显示板块部分 527 public void init() { 528 this.setTitle("个人信息板块"); 529 this.setBackground(Color.magenta); 530 this.setBounds(400, 300, 300, 300); 531 this.setVisible(true); 532 533 // this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 534 } 535 536 public void Connect(String name) { 537 ResultSet rs = null; 538 // 驱动加载 539 try { 540 Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); 541 ct = DriverManager 542 .getConnection( 543 "jdbc:microsoft:sqlserver://localhost:1434;databaseName=Demo_1", 544 "sa", "869261636123"); 545 String sql = new String("Select * from Stu where stuId=?"); 546 ps = ct.prepareStatement(sql); 547 ps.setString(1, name); 548 rs = ps.executeQuery(); 549 while (rs.next()) { 550 int cnt = 1; 551 for (int i = 1; i <= 6; i++) { 552 if (4 == i) { 553 // 整数转化为String 554 jt[i - cnt].setText(String.valueOf(rs.getInt(i))); 555 } else { 556 String st = null; 557 try { 558 st = new String((rs.getString(i)).getBytes("gbk"), 559 "gb2312"); 560 } catch (UnsupportedEncodingException e) { 561 // TODO Auto-generated catch block 562 e.printStackTrace(); 563 } 564 if (i == 3) { 565 if (st.equals("男")) { 566 jradio[0].setSelected(true); 567 this.setSex("男"); 568 } else if (st.equals("女")) { 569 jradio[1].setSelected(true); 570 this.setSex("女"); 571 } else 572 JOptionPane.showMessageDialog(this, "性别处出现乱码"); 573 cnt++; 574 } else 575 jt[i - cnt].setText(st); 576 } 577 } 578 579 } 580 581 } catch (ClassNotFoundException | SQLException e) { 582 // TODO Auto-generated catch block 583 e.printStackTrace(); 584 } finally { 585 try { 586 if (rs != null) 587 rs.close(); 588 if (ps != null) 589 ps.close(); 590 if (ct != null) 591 ct.close(); 592 } catch (SQLException e) { 593 // TODO Auto-generated catch block 594 e.printStackTrace(); 595 } 596 } 597 } 598 599 @Override 600 public void actionPerformed(ActionEvent e) { 601 // TODO Auto-generated method stub 602 // 将数据写入数据库 603 if (e.getSource() == jb[0]) { 604 // 对写入的数据进行处理 605 try { 606 // 驱动加载 607 Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); 608 ct = DriverManager 609 .getConnection( 610 "jdbc:microsoft:sqlserver://localhost:1434;databaseName=Demo_1", 611 "sa", "869261636123"); 612 ps = ct.prepareStatement("Update stu Set Stuname=?,StuSex=?,StuAge=?,StuJg=?,StuDept=? where StuId=?"); 613 // 回来修改........ 614 // 名字 615 ps.setString(1, jt[1].getText().toString().trim()); 616 // 性别 617 ps.setString(2, this.getSex().trim()); 618 // 年龄 619 String tem = jt[2].getText().toString().trim(); 620 int value = Integer.valueOf(tem).intValue(); 621 ps.setInt(3, value); 622 // 籍贯 623 ps.setString(4, jt[3].getText().toString().trim()); 624 // 系别 625 ps.setString(5, jt[4].getText().toString().trim()); 626 // 学号 627 ps.setString(6, jt[0].getText().toString().trim()); 628 // 更新 629 int i = ps.executeUpdate(); 630 if (1 == i) 631 JOptionPane.showMessageDialog(this, "添加成功!"); 632 else 633 JOptionPane.showMessageDialog(this, "添加失败!"); 634 635 } catch (Exception e1) { 636 // TODO Auto-generated catch block 637 e1.printStackTrace(); 638 } finally { 639 // 关闭数据库的一些调用函数 640 try { 641 if (ps != null) 642 ps.close(); 643 if (ct != null) 644 ct.close(); 645 } catch (SQLException e1) { 646 // TODO Auto-generated catch block 647 e1.printStackTrace(); 648 } 649 } 650 this.dispose(); 651 } else if (e.getSource() == jb[0]) 652 // 释放点该窗口, 退出该版面 653 this.dispose(); 654 else if (jradio[0].isSelected()) { 655 // 将名字改为男 656 this.setSex("男"); 657 } else if (jradio[1].isSelected()) { 658 // 将名字改为女 659 this.setSex("女"); 660 } 661 } 662 663 public String getSex() { 664 return this.sex; 665 } 666 667 public void setSex(String sex) { 668 this.sex = sex; 669 } 670 } 671 672 // 删除界面类 673 class Delete extends JDialog implements ActionListener { 674 675 // 设置为确认和取消两个按钮 676 JButton[] button = new JButton[2]; 677 JPanel jp; 678 JTable jt; 679 JScrollPane jsp = null; 680 // 设置为一个删除的表单 681 MyJTable mytable; 682 // SQL几个常用的变量类型 683 684 Connection ct = null; 685 PreparedStatement ps = null; 686 ResultSet rs = null; 687 private String name; 688 689 public Delete(Frame ower, String name, boolean Model) { 690 691 super(ower, Model); 692 this.setName(name); 693 jp = new JPanel(); 694 button[0] = new JButton("确定"); 695 button[0].addActionListener(this); 696 button[1] = new JButton("取消"); 697 button[1].addActionListener(this); 698 jp.add(button[0]); 699 jp.add(button[1]); 700 701 // 设置一个我的列表的界面 702 mytable = new MyJTable(name); 703 jt = new JTable(mytable); 704 JScrollPane jsp = new JScrollPane(jt); 705 this.add(jp, BorderLayout.SOUTH); 706 this.add(jsp, BorderLayout.NORTH); 707 this.setTitle("删除界面"); 708 this.setSize(400, 250); 709 this.setResizable(false); 710 this.setVisible(true); 711 712 } 713 714 public String getName() { 715 return name; 716 } 717 718 public void setName(String name) { 719 this.name = name; 720 } 721 722 @Override 723 public void actionPerformed(ActionEvent e) { 724 // TODO Auto-generated method stub 725 if (e.getSource() == button[0]) { 726 727 try { 728 // 加载上jdbc_odbc驱动 729 Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); 730 // 连接sql 731 ct = DriverManager 732 .getConnection( 733 "jdbc:microsoft:sqlserver://localhost:1434;databaseName=Demo_1", 734 "sa", "869261636123"); 735 String sql = new String("delete from Stu where Stuname=?"); 736 ps = ct.prepareStatement(sql); 737 ps.setString(1, this.getName().trim()); 738 739 int i = ps.executeUpdate(); 740 if (1 == i) 741 JOptionPane.showMessageDialog(this, "删除成功"); 742 else 743 JOptionPane.showMessageDialog(this, "删除失败了啦!"); 744 745 } catch (ClassNotFoundException | SQLException e1) { 746 // TODO Auto-generated catch block 747 e1.printStackTrace(); 748 } finally { 749 try { 750 if (ps != null) 751 ps.close(); 752 if (ct != null) 753 ct.close(); 754 } catch (SQLException e1) { 755 // TODO Auto-generated catch block 756 e1.printStackTrace(); 757 } 758 } 759 } 760 761 this.dispose(); 762 } 763 }
时间: 2024-10-18 01:25:43