📄 server.java.bak
字号:
//Server 类
import java.io.*;
import java.net.*;
import java.sql.*;
import java.util.Vector;
class ServerThread extends Thread
{
static String odbcDnsStr="jdbc:odbc:JIM";
String user;
String password;
private Socket socket;//定义套接口
private BufferedReader in;//定义输入流
private PrintWriter out;//定义输出流
//
public ServerThread( String dbServerUser,String dbServerPassword,Socket s) throws
IOException
{
user=dbServerUser;
password=dbServerPassword;
socket=s;//取得传递参数
in=new BufferedReader(new InputStreamReader(socket.getInputStream( )));//创建输入流
out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream( ))),true);//创建输出流
start( );//启动线程
}
//
public void processLogin( )
{
try
{
Connection c=DriverManager.getConnection(odbcDnsStr,user,password);
String sql="SELECT NickName,Password FROM Im WHERE ImNo=?";
PreparedStatement prepare=c.prepareCall(sql);
Sring ImNo=in.readLine( );
int g=Integer.parseInt(ImNo);
String passwd=in.readLine( ).trim( );
prepare.clearParameters( );
prepare.setInt(1,g);
ResultSet r=prepare.execteQuery( );
if(r.next( ))
{
String pass=r.getString("Password").trim( );
if(passwd.regionMatches(0,pass,0,pass.length( )))
{
out.println("OK");
out.println("用户名已经正常登陆!");
String setip="UPDATE Im SET Ip=?WHERE ImNo=?";
PreparedStatement prest=c.prepareCall(setip);
prest.clearParameters();
prest.setString(1,socket.geInetAddress( ).getHostAddress( ));
prest.setInt(2,g);
int set=prest.executeUpdate( );
String Online="UPDATE Im SET Online =1 WHERE ImNo=?";
PreparedStatement prest2=c.prepareCall(Online);
prest2.clearParameters( );
prest2.setInt(1,g);
int set2=prest2.executeUpdate();
}
else
{
out.println("FALSE");
out.println("用户名的密码正确!");
}
r.close();
c.close();
}
else
{
out.println("FALSE");
out.println("用户名不存在!");
r.close();
c.close();
}
}
catch(Exception e)
{
out.println("FALSE");
out.println("服务器访问数据库出错!");
}
}
//
public void processNew( )
{
try
{
connection c=DriverManager.getConnection(odbcDnsStr,user,password);
int no=0;
String getImNo="SELECT MAX(ImNo)FROM Im";
PrepareStatement prepare3=c.prepareCall(getImNo);
ResultSet r=prepare3.executeQuery( );
while(r.next( ))
{
no=r.getInt(1);
}
no++;
String newsql="INSERT INTO Im(ImNo,NickName,PassWord,Face,Sex,Age,EMail,HomePage,Phone,Resume)values(?,?,?,?,?,?,?,?,?,?)";
PreparedStatement prepare=c.prepareCall(newsql);
String nickname=in.readLine( ).trim( );
String password=in.readLine( ).trim( );
int face=Integer.parseInt(in.readLine( ));
int sex=Integer.parseInt(in.readLine( ));
int age=Integer.parseInt(in.readLine( ));
String email=in.readLine( ).trim( );
String homepage=in.readLine( ).trim( );
String phone=in.readLine( ).trim( );
String resume=in.readLine( ).trim( );
prepare.clearParameters( );
prepare.setInt(1,no);
prepare.setString(2,nickname);
prepare.setString(3,password);
prepare.setInt(4,face);
prepare.setInt(5,sex);
prepare.setInt(6,age);
prepare.setString(7,email);
prepare.setString(8,homepage);
prepare.setString(9,phone);
prepare.setString(10,resume);
int r2=prepare.executeUpdate( );
out.println(no);
out.println("OK");
c.close();
}
catch (Exception e)
{
e.printStackTrace( );
out.println("-1");
out.println("FALSE");
}
}
//
public void processFriend( )
{
try
{
Connection c=DriverManager.getConnection(odbcDnsStr,user,password);
String friend="SELECT Friend FROM Friend WHERE ImNo=?";
PreparedStatement prepare=c.prepareCall(friend);
prepare.clearParameters( );
int ImNo=Integer.parseInt(in.readLine( ));
prepare.setInt(1,ImNo);
ResultSet r=prepare.executeQuery( );
Vector friendNo=new Vector( );
while( r.next( ))
{
friendNo.add(new Integer(r.getInt(1)));
}
r.close();
for(int i=0;i<friendNo.size( );i++)
{
String friendinfo="SELECT NickName,Face,Sex,Age,Ip,RPort,Online,EMail,HomePage,Phone,Resume FROM Im WHERE ImNO=?";
PraparedStatement prepare2=c.prepareCall(friendinfo);
prepare2.clearParameters( );
prepare2.setObject(1,friendNo.get(i));
ResultSet rr=prepare2.executeQuery( );
boolean Online;
if(rr.next( ))
{
out.println(rr.getString("NickName").trim( ));
out.println(friendNo.get(i));
out.println(rr.getInt("Face"));
out.println(rr.getInt("Sex"));
out.println(rr.getInt("Age"));
out.println(rr.getString("IP").trim( ));
out.println(rr.getInt("RPort"));
Online=rr.getBoolean("Online");
if(Online)out.println("1");
else{out.println("0");}
out.println(rr.getString("EMail").trim( ));
out.println(rr.getString("HomePage").trim( ));
out.println(rr.getString("Phone").trim( ));
out.println(rr.getString("Resume").trim( ));
}
rr.close( );
}
out.println("OVER");
c.close( );
}
catch(Exception e)
{
e.printStackTrace( );
}
}
//
public void processAddNewFriend( )
{
try
{
Connection c=DriverManager.getConnection(odbcDnsStr,user,password);
int friendImNo=Integer.parseInt(in.readLine( ));
int myImNo=Integer.parseInt(in.readLine( ));
String sqlStr="SELECT ImNo FROM Im WHERE ImNO=?";
PreparedStatement prepare=c.prepareCall(sqlStr);
prepare.clearParameters();
prepare.setInt(1,friendImNo);
ResultSet rr=prepare.executeQuery();
if(!rr.next( ))
{
out.println("FALSE");
out.println("这个JIM编号的人不存在!");
return;
}
rr.close( );
prepare.cancel( );
sqlStr="SELECT ImNo,Friend FROM Friend WHERE ImNo=?AND Friend=?";
prepare=c.prepareCall(sqlStr);
prepare.clearParameters( );
prepare.setInt(1,myImNo);
prepare.setInt(2,friendImNo);
rr=prepare.executeQuery();
if(rr.next( ))
{
out.println("FALSE");
our.println("该朋友已经加入了!");
return;
}
rr.close( );
prepare.cancel( );
sqlStr="Insert INTO Friend values(?,?)";
prepare=c.prepareCall(sqlStr);
prepare.clearParameters( );
prepare.setInt(1,myImNo);
prepare.setInt(2,friendImNo);
int r=0;
r=prepare.executeUpdate();
if(r!=1)
{
out.println("FALSE");
out.println("加入好友时操作数据库出现错误!");
}
else
{
String friendInfoSql="SELECT NickName,Face,Sex,Age,Ip,RPort,Online,EMail,HomePage,Phone,Resume FROM Im WHERE ImNo=?";
prepare=c.prepareCall(friendInfoSql);
prepare.clearParameters( );
prepare.setInt(1,friendImNo);
rr=prepare.executeQuery();
boolean Online;
if(rr.next())
{
out.println(rr.getString("NickName").trim( ));
out.println(friendImNo);
out.println(rr.getInt("Face"));
out.println(rr.getInt("Sex"));
out.println(rr.getInt("Age"));
out.println(rr.getString("Ip").trim( ));
out.println(rr.getInt("RPort"));
Online=rr.getBoolean("Online");
if(Online)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -