谁能帮我看看哪儿出错了啊,这是我客户端窗体中实现一个修改密码功能的代码可以判断用户名和密码是否一致,也可以在服务器端更新数据库,但是更新后信息无法返回客户端,返回的信息还是查询时所返回的信息,而且就算服务器端一直开着,客户端也不能两次与服务器进行连接,private void button1_Click(object sender, EventArgs e)
{
AboutSQL aboutSql = new AboutSQL();
string sql = string.Empty; //存放数据库操作语句
string msg = string.Empty; //存放服务器返回的信息 sql = "select * from 权限表 where 用户名='" + txt1.Text.ToString() + "' and 密码='" + txt2.Text.ToString() + "'";
aboutSql.connect(); // 连接服务器
aboutSql.SendMsg(sql); //传送查询语句到服务器() msg=aboutSql.Getmsg(); //接收服务器返回的查询结果
if (msg == "") //如果返回的信息为空,说明查询结果为空
{
MessageBox.Show("密码不正确!");
}
else
{
sql = "update 权限表 set 密码='" + txt3.Text.ToString() + "' where 用户名='" + txt1.Text.ToString() + "'";
msg = string.Empty;
aboutSql.SendMsg(sql); //传送查询语句到服务器 msg = aboutSql.Getmsg(); //接收服务器返回的查询结果
if (msg == "OK") //如果返回的信息为空,说明查询结果为空
{
MessageBox.Show("操作成功!");
}
else
{
MessageBox.Show("操作失败!");
}
}
//客户端进行连接的类
using System;
using System.Collections.Generic;
using System.Text;
using System.Net ;
using System.Net .Sockets ;
using System.Threading ;
using System.IO;
using System.Windows.Forms;
using System.Data ;
using System.Data .SqlClient;namespace WindowsApplication1
{
class AboutSQL
{
private Socket mySocket;
private Thread myThread;
private string msg;
private DataSet dataset=new DataSet ();
private string myIP; //当前IP地址
private IPEndPoint remoteIP; //远端IP地址
public string Getmsg()
{
myThread.Join(); //等待ReciveMsg线程结束
return msg;
} public void connect()
{
remoteIP = new IPEndPoint(System.Net.IPAddress.Parse("192.168.1.101"), 11000);
mySocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{
mySocket.Connect(remoteIP);
myThread = new Thread( new ThreadStart(ReciveMsg));
myThread.Start(); }
catch (Exception s)
{
MessageBox.Show("连接服务器失败,请重新连接!");
// return;
}
} public void ReciveMsg() //接收字符串
{
try
{
int byteRec = 0;
byte[] bytes = new byte[1024];
msg = string.Empty;
while (true)
{
byteRec = mySocket.Receive(bytes);
msg += Encoding.Unicode.GetString(bytes, 0, byteRec); if (byteRec < 1024)
{
break;
}
} string[] datas = msg.Split("|".ToCharArray()); ; //分解字符串
if (datas[1] != "Exit")
{
msg = "Error"; //接收出错
}
else
{
msg = datas[0]; //接收到的查询的结果 }
}
catch (Exception ee)
{
MessageBox.Show(ee.Message.ToString());
return;
}
}
public void SendMsg(string sql) //发送信息
{
try
{
byte[] msg;
System.Net.IPAddress[] addressList = Dns.GetHostByName(Dns.GetHostName()).AddressList;
myIP = string.Empty;
for (int i = 0; i < addressList.Length; i++)
{
myIP += addressList[i].ToString();
} //获取当前IP msg = Encoding.Unicode.GetBytes(sql + "|" + myIP);
int byteSend = mySocket.Send(msg); //发送信息
}
catch (Exception ee)
{
MessageBox.Show(ee.Message.ToString());
return;
}
}
}
}
//服务器端
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.IO;
using System.Data .SqlClient ;
using System.Runtime.Serialization;namespace WindowsApplication1
{
public partial class Form1 : Form
{
Socket listener;
Socket mySocket;
Thread myThread;
string stringRec;string str = "Data Source=DQBY-53A3856047;Initial Catalog=项目管理;Integrated Security=True";
SqlDataAdapter sqldataAdapter; //对数据库进行操作
SqlConnection sqlConnection;
SqlCommand sqlCommand;
DataSet dataSet; public Form1()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{ myThread = new Thread(new ThreadStart(Listen));
myThread.Start(); } public void Listen()
{ byte[] bytes = new Byte[1024];
string sql = string.Empty;
string data = string.Empty;
string remoteIP = string.Empty;
string[] datas = new string[2];
IPEndPoint localEndPoint = new IPEndPoint(System.Net.IPAddress.Any, 11000);
listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
listener.Bind(localEndPoint);
listener.Listen(10);
mySocket = listener.Accept (); while (true)
{
int byteRec; //接收字符串
bytes = new Byte[1024];
if (mySocket.Poll(1000, SelectMode.SelectRead))
{ byteRec = mySocket.Receive(bytes);
data = Encoding.Unicode.GetString(bytes, 0, byteRec);
datas = data.Split("|".ToCharArray()); ; //分解字符串
sql = string.Empty;
sql = datas[0];
MessageBox.Show(sql);
remoteIP = datas[1];
sqlConnection = new SqlConnection(str);
sqlConnection.Open(); string[] tokens = sql.Split(" ".ToCharArray());
if (tokens[0] == "select") //如果是查询语句
{
sqldataAdapter = new SqlDataAdapter(sql, sqlConnection);
dataSet = new DataSet();
sqldataAdapter.Fill(dataSet);
stringRec = dataSetToString(dataSet); //将dataset变为string返回操作的结果为string }
else //如果是是插入、删除、修改语句
{
try
{
sqlCommand = new SqlCommand(sql, sqlConnection);
sqlCommand.ExecuteNonQuery();
stringRec = "OK";
}
catch(Exception ee)
{
stringRec = "Error";
}
} stringRec += "|Exit";
Byte[] sendbyte = Encoding.Unicode.GetBytes(stringRec);
int byteSend = mySocket.Send(sendbyte);
}
}
}}
{
AboutSQL aboutSql = new AboutSQL();
string sql = string.Empty; //存放数据库操作语句
string msg = string.Empty; //存放服务器返回的信息 sql = "select * from 权限表 where 用户名='" + txt1.Text.ToString() + "' and 密码='" + txt2.Text.ToString() + "'";
aboutSql.connect(); // 连接服务器
aboutSql.SendMsg(sql); //传送查询语句到服务器() msg=aboutSql.Getmsg(); //接收服务器返回的查询结果
if (msg == "") //如果返回的信息为空,说明查询结果为空
{
MessageBox.Show("密码不正确!");
}
else
{
sql = "update 权限表 set 密码='" + txt3.Text.ToString() + "' where 用户名='" + txt1.Text.ToString() + "'";
msg = string.Empty;
aboutSql.SendMsg(sql); //传送查询语句到服务器 msg = aboutSql.Getmsg(); //接收服务器返回的查询结果
if (msg == "OK") //如果返回的信息为空,说明查询结果为空
{
MessageBox.Show("操作成功!");
}
else
{
MessageBox.Show("操作失败!");
}
}
//客户端进行连接的类
using System;
using System.Collections.Generic;
using System.Text;
using System.Net ;
using System.Net .Sockets ;
using System.Threading ;
using System.IO;
using System.Windows.Forms;
using System.Data ;
using System.Data .SqlClient;namespace WindowsApplication1
{
class AboutSQL
{
private Socket mySocket;
private Thread myThread;
private string msg;
private DataSet dataset=new DataSet ();
private string myIP; //当前IP地址
private IPEndPoint remoteIP; //远端IP地址
public string Getmsg()
{
myThread.Join(); //等待ReciveMsg线程结束
return msg;
} public void connect()
{
remoteIP = new IPEndPoint(System.Net.IPAddress.Parse("192.168.1.101"), 11000);
mySocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{
mySocket.Connect(remoteIP);
myThread = new Thread( new ThreadStart(ReciveMsg));
myThread.Start(); }
catch (Exception s)
{
MessageBox.Show("连接服务器失败,请重新连接!");
// return;
}
} public void ReciveMsg() //接收字符串
{
try
{
int byteRec = 0;
byte[] bytes = new byte[1024];
msg = string.Empty;
while (true)
{
byteRec = mySocket.Receive(bytes);
msg += Encoding.Unicode.GetString(bytes, 0, byteRec); if (byteRec < 1024)
{
break;
}
} string[] datas = msg.Split("|".ToCharArray()); ; //分解字符串
if (datas[1] != "Exit")
{
msg = "Error"; //接收出错
}
else
{
msg = datas[0]; //接收到的查询的结果 }
}
catch (Exception ee)
{
MessageBox.Show(ee.Message.ToString());
return;
}
}
public void SendMsg(string sql) //发送信息
{
try
{
byte[] msg;
System.Net.IPAddress[] addressList = Dns.GetHostByName(Dns.GetHostName()).AddressList;
myIP = string.Empty;
for (int i = 0; i < addressList.Length; i++)
{
myIP += addressList[i].ToString();
} //获取当前IP msg = Encoding.Unicode.GetBytes(sql + "|" + myIP);
int byteSend = mySocket.Send(msg); //发送信息
}
catch (Exception ee)
{
MessageBox.Show(ee.Message.ToString());
return;
}
}
}
}
//服务器端
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.IO;
using System.Data .SqlClient ;
using System.Runtime.Serialization;namespace WindowsApplication1
{
public partial class Form1 : Form
{
Socket listener;
Socket mySocket;
Thread myThread;
string stringRec;string str = "Data Source=DQBY-53A3856047;Initial Catalog=项目管理;Integrated Security=True";
SqlDataAdapter sqldataAdapter; //对数据库进行操作
SqlConnection sqlConnection;
SqlCommand sqlCommand;
DataSet dataSet; public Form1()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{ myThread = new Thread(new ThreadStart(Listen));
myThread.Start(); } public void Listen()
{ byte[] bytes = new Byte[1024];
string sql = string.Empty;
string data = string.Empty;
string remoteIP = string.Empty;
string[] datas = new string[2];
IPEndPoint localEndPoint = new IPEndPoint(System.Net.IPAddress.Any, 11000);
listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
listener.Bind(localEndPoint);
listener.Listen(10);
mySocket = listener.Accept (); while (true)
{
int byteRec; //接收字符串
bytes = new Byte[1024];
if (mySocket.Poll(1000, SelectMode.SelectRead))
{ byteRec = mySocket.Receive(bytes);
data = Encoding.Unicode.GetString(bytes, 0, byteRec);
datas = data.Split("|".ToCharArray()); ; //分解字符串
sql = string.Empty;
sql = datas[0];
MessageBox.Show(sql);
remoteIP = datas[1];
sqlConnection = new SqlConnection(str);
sqlConnection.Open(); string[] tokens = sql.Split(" ".ToCharArray());
if (tokens[0] == "select") //如果是查询语句
{
sqldataAdapter = new SqlDataAdapter(sql, sqlConnection);
dataSet = new DataSet();
sqldataAdapter.Fill(dataSet);
stringRec = dataSetToString(dataSet); //将dataset变为string返回操作的结果为string }
else //如果是是插入、删除、修改语句
{
try
{
sqlCommand = new SqlCommand(sql, sqlConnection);
sqlCommand.ExecuteNonQuery();
stringRec = "OK";
}
catch(Exception ee)
{
stringRec = "Error";
}
} stringRec += "|Exit";
Byte[] sendbyte = Encoding.Unicode.GetBytes(stringRec);
int byteSend = mySocket.Send(sendbyte);
}
}
}}
在客户端还是服务器端关闭连接?