JAVA中JDBC鏈接sql server之登錄界面,做了一個圖形的登錄界面,通過調(diào)用數(shù)據(jù)庫的unpw表檢查用戶是否可以登錄。下圖是數(shù)據(jù)庫中unpw表相關(guān)屬性然后運行,等一次成功了,再運行就是很多很多的警告。不知道哪里出錯了,大神們,可以幫我看看么?源代碼如下:package?student1;
import?java.awt.BorderLayout;
import?java.awt.Font;
import?java.awt.GridLayout;
import?java.awt.event.ActionEvent;
import?java.awt.event.ActionListener;
import?java.awt.event.ItemEvent;
import?java.awt.event.ItemListener;
import?java.sql.Connection;
import?java.sql.DriverManager;
import?java.sql.ResultSet;
import?java.sql.SQLException;
import?java.sql.Statement;
import?javax.swing.JButton;
import?javax.swing.JComboBox;
import?javax.swing.JFrame;
import?javax.swing.JLabel;
import?javax.swing.JOptionPane;
import?javax.swing.JPanel;
import?javax.swing.JPasswordField;
import?javax.swing.JTextField;
import?javax.swing.SwingConstants;
//登錄界面
public?class?Entry?extends?JFrame?implements?ActionListener{
int?width?=?400;?//?窗體的寬度
int?height?=?220;//?高度
Connection?con?=?null;//?conn獲取鏈接
Statement?stmt?=?null;//?通過鏈接創(chuàng)建Statement對象stmt,在通過stmt對象執(zhí)行sql語句
ResultSet?rs?=?null;//?定義rs接收executeQuery()方法返回的ResultSet對象,查詢的數(shù)據(jù)就存放在rs對象中
int?qxian?=?0;//?獲取序號
//?最大的面板
JPanel?pan?=?new?JPanel();
//?系統(tǒng)登錄標(biāo)題面板
JPanel?title_pan?=?new?JPanel();
JLabel?title_lab?=?new?JLabel("學(xué)生信息管理系統(tǒng)登錄",?SwingConstants.CENTER);
//?放按鈕的面板
JPanel?button_pan?=?new?JPanel();
JButton?btnLogin?=?new?JButton("登錄");
JButton?cancel_btn?=?new?JButton("取消");
//?放置用戶名和密碼,角色的面板
JPanel?content_pan?=?new?JPanel();
JPanel?username_pan?=?new?JPanel();
JPanel?password_pan?=?new?JPanel();
JPanel?role_pan?=?new?JPanel();
JLabel?username_lab?=?new?JLabel("用戶名:",?SwingConstants.RIGHT);
JLabel?passowrd_lab?=?new?JLabel("密碼:?",?SwingConstants.RIGHT);
JLabel?role?=?new?JLabel("角色:?",?SwingConstants.RIGHT);
JComboBox?cbrole?=?new?JComboBox();//?制作下拉列表
JTextField?username?=?new?JTextField();//?接收用戶名的文本框
JPasswordField?password?=?new?JPasswordField();//?接收密碼的密碼框
public?Entry()?{
super("登陸");
init();
this.setVisible(true);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public?void?init()?{
pan.setLayout(new?BorderLayout());
title_lab.setFont(new?Font("黑體",?Font.BOLD,?20));
btnLogin.addActionListener(this);//?為登錄,取消注冊事件監(jiān)聽器
cancel_btn.addActionListener(this);
//?采用三行一列的表格布局
content_pan.setLayout(new?GridLayout(3,?1));
cbrole.addItem("管理員");
cbrole.addItem("學(xué)生");//?下拉列表添加,學(xué)生,管理員角色
username.setColumns(6);
password.setColumns(6);
role_pan.add(role);
role_pan.add(cbrole);
username_pan.add(username_lab);
username_pan.add(username);
password_pan.add(passowrd_lab);
password_pan.add(password);
content_pan.add(username_pan);
content_pan.add(password_pan);
content_pan.add(role_pan);
button_pan.add(btnLogin);
button_pan.add(cancel_btn);
title_pan.add(title_lab);
pan.add(title_pan,?BorderLayout.NORTH);
pan.add(button_pan,?BorderLayout.SOUTH);
pan.add(content_pan,?BorderLayout.CENTER);
this.add(pan);
this.setSize(width,?height);
int?screen_width?=?(int)?this.getToolkit().getScreenSize().getWidth();?//?得到屏幕的寬度
int?screen_height?=?(int)?this.getToolkit().getScreenSize().getHeight();?//?得到屏幕的高度
this.setLocation((screen_width?-?width)?/?2,?(screen_height?-?height)?/?2);
this.setResizable(false);
this.setVisible(true);
}
public?void?connDB()?{?//?連接數(shù)據(jù)庫
try?{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
}?catch?(ClassNotFoundException?e)?{
e.printStackTrace();
}
try?{
con?=?DriverManager.getConnection("jdbc:sqlserver://localhost:1434;DatabaseName=DBstudent",?"sa",
"1234567890");
stmt?=?con.createStatement();
}?catch?(SQLException?e)?{
e.printStackTrace();
}
}
public?void?closeDB()?//?關(guān)閉連接
{
try?{
stmt.close();
con.close();
}?catch?(SQLException?e)?{
e.printStackTrace();
}
}
@Override
public?void?actionPerformed(ActionEvent?e)?{
//?TODO?Auto-generated?method?stub
Object?source?=?e.getSource();
String?un?=?null;
String?pw?=?null;
int?qx?=?0;
boolean?success?=?false;//?用于判斷是否登錄成功
if?(source?==?btnLogin)?{
if?(username.getText().equals("")?||?password.getText().equals(""))?{//?判斷是否輸入了用戶名和密碼
JOptionPane.showMessageDialog(null,?"登錄名和密碼不能為空!");
}?else?{
this.connDB();
try?{
rs?=?stmt.executeQuery("select?*?from?unpw");
while?(rs.next())?{
un?=?rs.getString("un").trim();
pw?=?rs.getString("pw").trim();
qx?=?rs.getInt("qx");
if?(username.getText().equals(un))?{
if?(password.getText().equals(pw))?{
//?actionCode?=?OK;
this.setVisible(false);?//?隱藏登錄窗體
qxian?=?cbrole.getSelectedIndex();
if?(qxian?==?0)?{
JOptionPane.showConfirmDialog(null,?"您點擊了管理員界面",?"提示信息",?JOptionPane.DEFAULT_OPTION,
JOptionPane.OK_OPTION);
}
if?(qxian?==?1)?{
JOptionPane.showConfirmDialog(null,?"進入學(xué)生界面",?"提示信息",?JOptionPane.DEFAULT_OPTION,
JOptionPane.OK_OPTION);
}
success?=?true;
break;
}?else?{
JOptionPane.showMessageDialog(null,?"密碼錯誤!");
password.setText("");
success?=?true;
}
}
}
if?(!success)?{
JOptionPane.showMessageDialog(null,?"登錄名錯誤!");
username.setText("");
password.setText("");
}
}?catch?(SQLException?e1)?{
e1.printStackTrace();
}
}
/*
?*?重置那些框?}?else?if?(source?==?btncz)?{?txtUser.setText("");
?*?txtPwd.setText("");
?*/
}?else?if?(source?==?cancel_btn)?{
System.exit(0);
}
}
}
3 回答
已采納

陽光緩緩彌漫整個午后
TA貢獻2條經(jīng)驗 獲得超1個贊
數(shù)據(jù)庫連接使用完畢之后沒有關(guān)閉 第二次操作又一次創(chuàng)建數(shù)據(jù)庫連接導(dǎo)致的問題

if_else_
TA貢獻42條經(jīng)驗 獲得超23個贊
如果先成功,后失敗的話??赡苁菙?shù)據(jù)庫端口關(guān)閉了,還有一種可能就是太久沒有動,大概多少分鐘記不清了,密碼過期
添加回答
舉報
0/150
提交
取消