socket编程并连接数据库问题!! 请来看一下,帮帮忙!!

939397232 2012-12-19 02:23:18
下面的代码是一个ATM服务器端的代码,想要与数据库连接并能与客户端通信,但是下面程序运行的时候老是在out.writeUTF(Smessage); new Communicate("用户名或密码错误!\n请重新输入!");
new Connect(inMsage); 处出现空指针错误,找了半天找不出原因,估计其他地方也有错误,刚开始学java对这些错误有些不知所措,请各位帮忙看一下是什么问题,谢谢!!

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
import java.sql.*;

public class csServerATM {
@SuppressWarnings("resource")
public static void main(String[] args){
ServerSocket server=null;
//Communicate thread;
Socket visitor=null;

while(true){
try{
server=new ServerSocket(4422);

//System.out.println("linked successfully");
}
catch(IOException e){System.out.println(""+e);break;}
try{ visitor=server.accept(); }
catch(IOException e1){System.out.println(""+e1);break;}
if(visitor!=null){
new Communicate(visitor).start();
}
else continue;
}

}
}

class Communicate extends Thread{
Socket cSocket;
ServerSocket server;
DataInputStream in;
DataOutputStream out;
String Smessage="";
Communicate(String mes){

while(true){
Smessage=mes;
try{
out.writeUTF(Smessage);
}
catch(IOException e1){System.out.println(""+e1);break;}
}}

Communicate(Socket t) {
try{
cSocket=t;
in=new DataInputStream(cSocket.getInputStream());
out=new DataOutputStream(cSocket.getOutputStream());
//out.writeUTF("successfully");
System.out.println("连接成功!");
}catch(IOException e){System.out.println("无法连接"+e);}

}
public void run(){
String inMsage="";
while(true){

try{
inMsage=in.readUTF();
//System.out.println(inMsage);
new Connect(inMsage);
}
catch(IOException e){System.out.println(""+e);break;}
}

}
public void SendMessage(String mes){

}
}

class Connect {
Connection dbCon;
ResultSet rs;
Statement sql;

Connect(String message){
String msage=message;
//System.out.println("shujuku"+msage);
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e){System.out.println("驱动失败!");}
try{
dbCon=DriverManager.getConnection("jdbc:odbc:bankAccount","","");
System.out.println("数据库连接成功");

if(msage.substring(0, 5).equals("query")){
if(msage.length()==14){
String accountNu=msage.substring(5,14);
String psw=msage.substring(14,msage.length());
sql=dbCon.createStatement();
rs=sql.executeQuery("SELECT accountNUMBER FROM account WHERE accountNumber='"+accountNu+"'AND password='"+psw+"'");
String amount=rs.getString(1);
if(amount!=null){
new Communicate(amount);
}}
else{
new Communicate("用户名或密码错误!\n请重新输入!");
}

}
}catch(SQLException e){System.out.println("数据库连接lost");}
finally {try {
dbCon.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}}

}
}
...全文
210 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
939397232 2012-12-22
  • 打赏
  • 举报
回复
引用 2 楼 fangmingshijie 的回复:
Java code?123rs=sql.executeQuery("SELECT accountNUMBER FROM account WHERE accountNumber='"+accountNu+"'AND password='"+psw+"'");//AND前面少个空格改为:rs=sql.executeQuery("SELECT accountNUMBER FRO……
不是这个原因, 我用了另外的方法,将socket与connect放在一个类中就没有这个问题了,可是我还是不知道将这些方法分别放在不同类中如何实现, 老是出现空指针错误。 谢谢你的回答。
  • 打赏
  • 举报
回复
rs=sql.executeQuery("SELECT accountNUMBER FROM account WHERE accountNumber='"+accountNu+"'AND password='"+psw+"'");//AND前面少个空格
改为:
rs=sql.executeQuery("SELECT accountNUMBER FROM account WHERE accountNumber='"+accountNu+"' AND password='"+psw+"'");
walkman_22 2012-12-20
  • 打赏
  • 举报
回复
你客户端的代码贴出来吧.外加报错的信息~~

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧