JBuilder 9中连接数据库出现问题
能查询数据库(sql server2000),但是,不能更改,为什么呢?
出错信息如下:系统错误,请检测数据库!
我的代码如下:
package card;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;
import javax.swing.JPasswordField;
import com.borland.dx.sql.dataset.*;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/
public class loginFrame extends JFrame {
JPanel contentPane;
BorderLayout borderLayout1 = new BorderLayout();
JPanel jPanel1 = new JPanel();
JLabel jLabel1 = new JLabel();
JLabel jLabel2 = new JLabel();
JLabel jLabel3 = new JLabel();
JTextField jTextField1 = new JTextField();
JPasswordField jTextField2 = new JPasswordField();
JButton jButton1 = new JButton();
JButton jButton2 = new JButton();
Database database1 = new Database();
QueryDataSet queryDataSet1 = new QueryDataSet();
//Construct the frame
public loginFrame() {
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
//Component initialization
private void jbInit() throws Exception {
contentPane = (JPanel) this.getContentPane();
contentPane.setLayout(borderLayout1);
this.setSize(new Dimension(400, 300));
this.setTitle("欢迎访问");
jPanel1.setLayout(null);
jLabel1.setFont(new java.awt.Font("Serif", 1, 40));
jLabel1.setForeground(Color.blue);
jLabel1.setHorizontalAlignment(SwingConstants.CENTER);
jLabel1.setText("欢迎访问信用卡系统");
jLabel1.setBounds(new Rectangle(0, 20, 400, 40));
jLabel2.setFont(new java.awt.Font("Serif", 1, 16));
jLabel2.setForeground(Color.blue);
jLabel2.setHorizontalAlignment(SwingConstants.CENTER);
jLabel2.setText("卡号:");
jLabel2.setBounds(new Rectangle(100, 100, 60, 25));
jLabel3.setFont(new java.awt.Font("Serif", 1, 16));
jLabel3.setForeground(Color.blue);
jLabel3.setHorizontalAlignment(SwingConstants.CENTER);
jLabel3.setText("密码:");
jLabel3.setBounds(new Rectangle(100, 160, 60, 25));
jTextField1.setText("");
jTextField1.setBounds(new Rectangle(160, 100, 140, 25));
jTextField2.setText("");
jTextField2.setBounds(new Rectangle(160, 160, 140, 25));
jButton1.setBounds(new Rectangle(120, 220, 70, 25));
jButton1.setText("确定");
jButton1.addActionListener(new loginFrame_jButton1_actionAdapter(this));
jButton2.setBounds(new Rectangle(210, 220, 70, 25));
jButton2.setText("重置");
jButton2.addActionListener(new loginFrame_jButton2_actionAdapter(this));
//Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
//String url = "jdbc:microsoft:sqlserver://keweixing:1433;DatabaseName=dbcard";
//String username= "sa";
//String password= "";
//con = DriverManager.getConnection(url,username,password);
con = cardConnect.getconn(); //不用建立对象,直接调用cardConnect的方法
loginQuery = "Select * from card where CardID = ? and Password =?";
loginStmt = con.prepareStatement(loginQuery);
contentPane.add(jPanel1, BorderLayout.CENTER);
jPanel1.add(jLabel1, null);
jPanel1.add(jLabel2, null);
jPanel1.add(jTextField1, null);
jPanel1.add(jButton1, null);
jPanel1.add(jButton2, null);
jPanel1.add(jLabel3, null);
jPanel1.add(jTextField2, null);
}
//Overridden so we can exit when window is closed
protected void processWindowEvent(WindowEvent e) {
super.processWindowEvent(e);
if (e.getID() == WindowEvent.WINDOW_CLOSING) {
System.exit(0);
}
}
void jButton1_actionPerformed(ActionEvent e) {
try{
CardID = jTextField1.getText(); //提取CardID的值
loginStmt.setString(1, CardID); //给第一个主机变量赋值
loginStmt.setString(2, jTextField2.getText()); //给第二个主机变量赋值(先提取密码值)
ResultSet rs = loginStmt.executeQuery();
if(rs.next()){ //验证卡号和密码
eventFrame eventFrame1 = new eventFrame(CardID);
eventFrame1.setSize(new Dimension(400, 300));
this.dispose();
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = eventFrame1.getSize();
eventFrame1.setState(eventFrame1.NORMAL);
eventFrame1.setLocation( (screenSize.width - frameSize.width) / 2,
(screenSize.height - frameSize.height) / 2);
eventFrame1.show();
}
else{
jTextField1.setText("卡号或密码错误。");
jTextField2.setText("");//清空输入框并给出输入错误提示
}
// finally{
cardConnect.close(rs);
cardConnect.close(loginStmt);
cardConnect.close(con);
// }
}
catch(SQLException ex) {
System.out.print("系统错误,请重新运行。");
}
}
void jButton2_actionPerformed(ActionEvent e) {
jTextField1.setText("");
jTextField2.setText("");
}
private String CardID;
private String loginQuery;
private PreparedStatement loginStmt;
private Connection con;
}
class loginFrame_jButton1_actionAdapter implements java.awt.event.ActionListener {
loginFrame adaptee;
loginFrame_jButton1_actionAdapter(loginFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton1_actionPerformed(e);
}
}
class loginFrame_jButton2_actionAdapter implements java.awt.event.ActionListener {
loginFrame adaptee;
loginFrame_jButton2_actionAdapter(loginFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton2_actionPerformed(e);
}
}