哪里出错了???
服务器端代码:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.net.*;
import java.sql.*;
class Net extends Thread{
private Socket socket;
private BufferedReader in;
private PrintWriter out;
private Connection con = null;
private Statement stmt;
private ResultSet rst;
private String [] str = new String [3];
private boolean flag = true;
public Net (Socket s) throws IOException, SQLException, ClassNotFoundException{
socket = s;
in = new BufferedReader(
new InputStreamReader(
socket.getInputStream()));
out = new PrintWriter(
new BufferedWriter(
new OutputStreamWriter(
socket.getOutputStream())),true);
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection("jdbc:odbc:net");
stmt = con.createStatement();
start();
}
public void run(){
try{
for(int i = 0; i<3; i++){
str[i] = in.readLine();
}
rst = stmt.executeQuery("select classNO, studentNO, password from studentinfo");
while(rst.next()){
if(rst.getString(1).equals(str[0]) && rst.getString(2).equals(str[1])){
if(rst.getString(3).equals(str[2])){
out.print(new Database1(rst.getString(1), rst.getString(2)).getContent());/*关键*/
out.print("END");
break;
} else {
out.println("密码错误!");
break;
}
} else {
flag = false;
}
}
if(!flag){
out.println("不存在此班号或学号!");
}
System.out.println("Closing " + socket);
}
catch(IOException i){
}
catch(SQLException s){
}
finally{
try{
rst.close();
stmt.close();
con.close();
socket.close();
}
catch(IOException i){
System.err.println("Socket not closed");
}
catch(SQLException s){
}
}
}
}
class Database1 extends Thread{
private Connection con = null;
private Statement stmt;
private ResultSet rst;
private int column;
private String [] columnname;
private String content;
public Database1(String str1, String str2){
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection("jdbc:odbc:net");
stmt = con.createStatement();
rst = stmt.executeQuery("select * from " + str1 + " where 学号 = '" + str2 + "'");
ResultSetMetaData rsmd = rst.getMetaData();
column = rsmd.getColumnCount();
columnname = new String [column - 2];
for(int i = 0; i<column-2; i++){
columnname[i] = rsmd.getColumnLabel(i+3) + ": ";
}
while(rst.next()){
content = rst.getString(2) + "\n";
for(int j=0; j<column-2; j++){
String a = new String(columnname[j] + rst.getString(j+3) + "\n");
content = content + a;
}
}
}
catch(SQLException s){
content = new String("Sql");
}
catch(ClassNotFoundException c){
content = new String("Class");
}
finally{
try{
rst.close();
stmt.close();
con.close();
} catch (SQLException s){
}
}
}
public String getContent(){
return content;
}
}
public class Servernet{
private static final int port = 8080;
public static void main(String [] args) throws IOException{
System.out.println("Server Started...");
while(true){
ServerSocket s = new ServerSocket(port);
Socket socket = s.accept();
try{
new Net(socket);
}
catch(IOException i){
socket.close();
}
catch(SQLException sql){
}
catch(ClassNotFoundException c){
}
finally{
s.close();
}
}
}
}
客户端代码:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;
import java.io.*;
class panel extends JPanel {
private JPanel p = new JPanel();
private JLabel a = new JLabel("班号:", SwingConstants.CENTER);
private JLabel b = new JLabel("学号:", SwingConstants.CENTER);
private JLabel c = new JLabel("密码:", SwingConstants.CENTER);
private JTextField classno = new JTextField();
private JTextField studentno = new JTextField();
private JTextField password = new JTextField();
private JButton submit = new JButton("发送");
private JScrollPane scroll;
private JTextArea area = new JTextArea();
private submitAction action = new submitAction();
private int port = 8080;
public panel(){
scroll = new JScrollPane(area, scroll.VERTICAL_SCROLLBAR_AS_NEEDED, scroll.HORIZONTAL_SCROLLBAR_NEVER);
setLayout(new BorderLayout());
add(p, BorderLayout.NORTH);
add(scroll, BorderLayout.CENTER);
p.setLayout(new GridLayout(1,7,0,0));
p.add(a);p.add(classno);p.add(b);p.add(studentno);p.add(c);p.add(password);p.add(submit);
submit.addActionListener(action);
area.setLineWrap(true);
}
private class submitAction implements ActionListener{
public void actionPerformed(ActionEvent e){
try{
InetAddress addr = InetAddress.getByName(null);
Socket socket = new Socket(addr, port);
try{
PrintWriter out = new PrintWriter(
new BufferedWriter(
new OutputStreamWriter(
socket.getOutputStream())),true);
BufferedReader in = new BufferedReader(
new InputStreamReader(
socket.getInputStream()));
out.println(classno.getText());
out.println(studentno.getText());
out.println(password.getText());
while(true){
String str = in.readLine();
if(!str.equals("密码错误!") && !str.equals("不存在此班号或学号!")){
if(str.equals("END"))break;
area.setText(str);
} else {
area.setText(str);
break;
}
}
}
finally{
socket.close();
}
}
catch(IOException i){
area.setText("网络没有开通!");
}
}
}
}
class frame extends JFrame{
public frame(){
Container c = getContentPane();
c.add(new panel());
}
}
public class Clinet extends frame{
public static void main(String [] args){
frame f = new frame();
f.setDefaultCloseOperation(EXIT_ON_CLOSE);
f.setTitle("Clinet");
f.setSize(500, 300);
f.setResizable(false);
f.show();
}
}
程序运行后,当密码输入错误时,客户端会出现"密码错误!"字样。当班号或学号输入错误时,客户端也会出现"不存在此班号或学号!"字样。
但是当一切输入正确时,客户端不会出现任何字样!请各位指点,谢谢!
问题点数:0、回复次数:1Top
1 楼jkit(不再灌水)回复于 2003-08-04 21:18:46 得分 0
偶看可能是抛exception了,
在Database1 里面catch(Exception e)试试看.Top



