severdata.cs
上传用户:yan_wy
上传日期:2007-06-09
资源大小:112k
文件大小:13k
源码类别:

ICQ/即时通讯

开发平台:

C#

  1. using System;
  2. using System.Data;
  3. using System.Drawing;
  4. using System.Collections;
  5. using System.ComponentModel;
  6. using System.Windows.Forms;
  7. using System.Net;
  8. namespace qq
  9. {
  10. /// <summary>
  11. /// severdata 的摘要说明。
  12. /// </summary>
  13. public class severdata : System.Windows.Forms.Form
  14. {
  15. public DataSet dataset;
  16. Form1 form;
  17. private System.Data.SqlClient.SqlCommand sqlSelectCommand1;
  18. private System.Data.SqlClient.SqlCommand sqlInsertCommand1;
  19. public System.Data.SqlClient.SqlConnection sqlConnection1;
  20. public System.Data.SqlClient.SqlDataAdapter sqlDataAdapter1;
  21. private System.Data.SqlClient.SqlCommand sqlSelectCommand2;
  22. private System.Data.SqlClient.SqlCommand sqlInsertCommand2;
  23. private System.Data.SqlClient.SqlDataAdapter sqlDataAdapter2;
  24. /// <summary>
  25. /// 必需的设计器变量。
  26. /// </summary>
  27. private System.ComponentModel.Container components = null;
  28. public severdata(Form1 sform)
  29. {
  30. //
  31. // Windows 窗体设计器支持所必需的
  32. //
  33. form=sform;
  34. dataset=new DataSet();
  35. dataset.Tables.Add("user");
  36. dataset.Tables.Add("me");
  37. dataset.Tables.Add("you");
  38. InitializeComponent();
  39. //
  40. // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
  41. //
  42. }
  43. /// <summary>
  44. /// 清理所有正在使用的资源。
  45. /// </summary>
  46. protected override void Dispose( bool disposing )
  47. {
  48. if( disposing )
  49. {
  50. if(components != null)
  51. {
  52. components.Dispose();
  53. }
  54. }
  55. base.Dispose( disposing );
  56. }
  57. #region Windows 窗体设计器生成的代码
  58. /// <summary>
  59. /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  60. /// 此方法的内容。
  61. /// </summary>
  62. private void InitializeComponent()
  63. {
  64. this.sqlSelectCommand1 = new System.Data.SqlClient.SqlCommand();
  65. this.sqlConnection1 = new System.Data.SqlClient.SqlConnection();
  66. this.sqlInsertCommand1 = new System.Data.SqlClient.SqlCommand();
  67. this.sqlDataAdapter1 = new System.Data.SqlClient.SqlDataAdapter();
  68. this.sqlSelectCommand2 = new System.Data.SqlClient.SqlCommand();
  69. this.sqlInsertCommand2 = new System.Data.SqlClient.SqlCommand();
  70. this.sqlDataAdapter2 = new System.Data.SqlClient.SqlDataAdapter();
  71. // 
  72. // sqlSelectCommand1
  73. // 
  74. this.sqlSelectCommand1.CommandText = "SELECT id, mima, name, sex, picture, age, jianjie, state, ip FROM [user]";
  75. this.sqlSelectCommand1.Connection = this.sqlConnection1;
  76. // 
  77. // sqlInsertCommand1
  78. // 
  79. this.sqlInsertCommand1.CommandText = "INSERT INTO [user] (id, mima, name, sex, picture, age, jianjie, state, ip) VALUES" +
  80. " (@id, @mima, @name, @sex, @picture, @age, @jianjie, @state, @ip); SELECT id, mi" +
  81. "ma, name, sex, picture, age, jianjie, state, ip FROM [user]";
  82. this.sqlInsertCommand1.Connection = this.sqlConnection1;
  83. this.sqlInsertCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@id", System.Data.SqlDbType.Int, 4, "id"));
  84. this.sqlInsertCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@mima", System.Data.SqlDbType.NVarChar, 10, "mima"));
  85. this.sqlInsertCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@name", System.Data.SqlDbType.VarChar, 10, "name"));
  86. this.sqlInsertCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@sex", System.Data.SqlDbType.VarChar, 10, "sex"));
  87. this.sqlInsertCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@picture", System.Data.SqlDbType.VarChar, 10, "picture"));
  88. this.sqlInsertCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@age", System.Data.SqlDbType.Int, 4, "age"));
  89. this.sqlInsertCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@jianjie", System.Data.SqlDbType.VarChar, 2147483647, "jianjie"));
  90. this.sqlInsertCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@state", System.Data.SqlDbType.Int, 4, "state"));
  91. this.sqlInsertCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@ip", System.Data.SqlDbType.VarChar, 10, "ip"));
  92. // 
  93. // sqlDataAdapter1
  94. // 
  95. this.sqlDataAdapter1.InsertCommand = this.sqlInsertCommand1;
  96. this.sqlDataAdapter1.SelectCommand = this.sqlSelectCommand1;
  97. this.sqlDataAdapter1.TableMappings.AddRange(new System.Data.Common.DataTableMapping[] {
  98.   new System.Data.Common.DataTableMapping("Table", "user", new System.Data.Common.DataColumnMapping[] {
  99.   new System.Data.Common.DataColumnMapping("id", "id"),
  100.   new System.Data.Common.DataColumnMapping("mima", "mima"),
  101.   new System.Data.Common.DataColumnMapping("name", "name"),
  102.   new System.Data.Common.DataColumnMapping("sex", "sex"),
  103.   new System.Data.Common.DataColumnMapping("picture", "picture"),
  104.   new System.Data.Common.DataColumnMapping("age", "age"),
  105.   new System.Data.Common.DataColumnMapping("jianjie", "jianjie"),
  106.   new System.Data.Common.DataColumnMapping("state", "state"),
  107.   new System.Data.Common.DataColumnMapping("ip", "ip")})});
  108. // 
  109. // sqlSelectCommand2
  110. // 
  111. this.sqlSelectCommand2.CommandText = "SELECT uid, friendid FROM friends";
  112. this.sqlSelectCommand2.Connection = this.sqlConnection1;
  113. // 
  114. // sqlInsertCommand2
  115. // 
  116. this.sqlInsertCommand2.CommandText = "INSERT INTO friends(uid, friendid) VALUES (@uid, @friendid); SELECT uid, friendid" +
  117. " FROM friends";
  118. this.sqlInsertCommand2.Connection = this.sqlConnection1;
  119. this.sqlInsertCommand2.Parameters.Add(new System.Data.SqlClient.SqlParameter("@uid", System.Data.SqlDbType.Int, 4, "uid"));
  120. this.sqlInsertCommand2.Parameters.Add(new System.Data.SqlClient.SqlParameter("@friendid", System.Data.SqlDbType.Int, 4, "friendid"));
  121. // 
  122. // sqlDataAdapter2
  123. // 
  124. this.sqlDataAdapter2.InsertCommand = this.sqlInsertCommand2;
  125. this.sqlDataAdapter2.SelectCommand = this.sqlSelectCommand2;
  126. this.sqlDataAdapter2.TableMappings.AddRange(new System.Data.Common.DataTableMapping[] {
  127.   new System.Data.Common.DataTableMapping("Table", "friends", new System.Data.Common.DataColumnMapping[] {
  128.  new System.Data.Common.DataColumnMapping("uid", "uid"),
  129.  new System.Data.Common.DataColumnMapping("friendid", "friendid")})});
  130. // 
  131. // severdata
  132. // 
  133. this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
  134. this.ClientSize = new System.Drawing.Size(292, 273);
  135. this.Name = "severdata";
  136. this.Text = "severdata";
  137. this.Closing += new System.ComponentModel.CancelEventHandler(this.severdata_Closing);
  138. this.Closed += new System.EventHandler(this.severdata_Closed);
  139. this.Paint += new System.Windows.Forms.PaintEventHandler(this.severdata_Paint);
  140. }
  141. #endregion
  142. public int yanzhen()
  143. {
  144. try
  145. {
  146. //下面是用户登陆时,验证密码是否错误,如果错误,则抛出错误,同时返回错误信息
  147. System.Data.SqlClient.SqlCommand sss=new System.Data.SqlClient.SqlCommand();
  148. sss.CommandText="SELECT name,mima,sex,picture,age,jianjie from [user] where id="+form.userid;
  149. sss.Connection=this.sqlConnection1;
  150. this.sqlDataAdapter1.SelectCommand=sss;
  151. this.sqlDataAdapter1.Fill(dataset,"me");
  152. if(this.dataset.Tables["me"].Rows.Count==0)
  153. return 0;//没有此用户
  154. foreach(DataRow dt in this.dataset.Tables["me"].Rows)
  155. {
  156. if(form.mima!=(dt[1].ToString()).Trim())
  157. return 0;//用户密码错误
  158. form.name=dt[0].ToString();
  159. }
  160. return 1;//密码正缺
  161. }
  162. catch(Exception ee)
  163. {
  164. return 2;//异常处理
  165. }
  166. }
  167. public void close()
  168. {
  169. //下面是当用户下线时,更新数据库,把它的state变为0,同时发送下线通知消息,以便它的好友用户处理
  170. System.Data.SqlClient.SqlCommand updata=new System.Data.SqlClient.SqlCommand();
  171. updata.CommandText= "UPDATE [user] SET state=0 WHERE id="+form.userid; 
  172. updata.Connection=this.sqlConnection1;
  173. this.sqlConnection1.Open();
  174. updata.ExecuteNonQuery();//执行语句
  175. this.sqlConnection1.Close();
  176. foreach(UserControl1 dt in form.userlist)
  177. {
  178. if(dt.state=="1")
  179. {
  180. form.use.sendmessage(form.userid);
  181. form.use.sendmessage(dt.uid);
  182. form.use.sendmessage("下线通知");//下线通知
  183. }
  184. }
  185. }
  186. public void addfriends()
  187. {
  188. }
  189. public void adduse(string name,string mima,string jianjie,string picture)
  190. {
  191. System.Data.SqlClient.SqlCommand select=new System.Data.SqlClient.SqlCommand();
  192. select.CommandText="SELECT top 1 id from [user] order by id desc";
  193. select.Connection=this.sqlConnection1;
  194. //这里是添加好友,上面先找到QQ号码最大的一个,这样在注册号码时,就自动分配给它的QQ号是当前的最大号加1
  195. try
  196. {
  197. this.sqlConnection1.Open();
  198. string a= (select.ExecuteScalar()).ToString();
  199. int b=int.Parse(a);//字符转换为数据
  200. b=b+1;//号码加1
  201. a=b.ToString();
  202. this.form.userid=a;
  203. string hostname=Dns.GetHostName();
  204. IPAddress ipAddress = Dns.GetHostByName(hostname).AddressList[0];
  205. //得到主机ip
  206. //下面是把用户加到数据库,insert语句的格式是insert into (×× )value(对应的数据);
  207. System.Data.SqlClient.SqlCommand insert=new System.Data.SqlClient.SqlCommand();
  208. insert.CommandText="INSERT INTO [user] (id, mima, name, sex, picture, age, jianjie, state, ip)  VALUES ("+//+b+","+form.mima+","+name+",男,1,20,"+jianjie+",0,0)";
  209. a+",'"+mima+"','"+name+"','男','"+picture+"',20,'"+jianjie+"',0,'"+ipAddress.ToString()+"')";
  210. MessageBox.Show("你的QQ号:"+b);//向用户说明你的QQ号
  211. insert.Connection=this.sqlConnection1;
  212. insert.ExecuteNonQuery();//执行查询
  213. insert.Connection=this.sqlConnection1;
  214. this.sqlConnection1.Close();
  215. }
  216. catch(Exception ee)
  217. {
  218. MessageBox.Show(ee.ToString());//   出错处理
  219. }
  220. }
  221. public void shanxian()
  222. {
  223. foreach(UserControl1 dt in form.userlist)
  224. {
  225. if(dt.state=="1")
  226. {
  227. form.use.sendmessage(form.userid);
  228. form.use.sendmessage(dt.uid);
  229. form.use.sendmessage("上线通知");
  230. }
  231. }
  232. }
  233. public void  Startset()
  234. {
  235. try
  236. {
  237. string hostname=Dns.GetHostName();
  238. IPAddress ipAddress = Dns.GetHostByName(hostname).AddressList[0];
  239. //获得主机ip,用DNS查询
  240. System.Data.SqlClient.SqlCommand updata=new System.Data.SqlClient.SqlCommand();
  241. updata.CommandText= "UPDATE [user] SET state=1 ,ip='"+ipAddress.ToString()+"' WHERE id="+form.userid; 
  242. /*
  243.   这句话是把数据库中的state由0变为1,同时储存它的ip,意思是用户上线了。这里的查询的号码为form。userid的用户
  244.   这里我要提醒一条的是,在写数据库语句时,如果是字符串,要加单引号,如果是数字,就不用了
  245.  */
  246. updata.Connection=this.sqlConnection1;
  247. this.sqlConnection1.Open();//打开连接
  248. updata.ExecuteNonQuery();//执行上面的语句,这里一定要打开数据连接
  249. this.sqlConnection1.Close();//关闭连接
  250. System.Data.SqlClient.SqlCommand select=new System.Data.SqlClient.SqlCommand();
  251. select.CommandText= "SELECT [user].id,[user].name,[user].sex,[user].picture,[user].age,[user].jianjie,[user].state,[user].ip FROM [user] , [friends]  where [friends].uid="+form.userid+" and [user].id =[friends].friendid";
  252. select.Connection=this.sqlConnection1;
  253. this.sqlDataAdapter1.SelectCommand=select;
  254. this.sqlDataAdapter1.Fill(dataset,"user");
  255. //上面是选择语句,选择本用户的好友信息,然后保存在dataset里的user表里
  256.                   //这里的sqlDataAdapter执行时不用写sqlconnect。open因为它集成了打开操作。
  257. //另外在数据库的语句中,凡是数据库的表都要加『』符合。
  258. }
  259. catch(Exception ee)
  260. {
  261. this.form.isinline=0;//出错处理。表示连接不到数据库
  262. }
  263. //下面是在用户界面上显示好友,数据来自dataset的user
  264. foreach(DataRow dt in this.dataset.Tables["user"].Rows)
  265. {
  266. UserControl1 userControl13=new UserControl1(form);
  267. userControl13.Dock=DockStyle.Top;
  268. userControl13.uid=dt[0].ToString();
  269. userControl13.name=dt[1].ToString();
  270. userControl13.sex=dt[2].ToString();
  271. userControl13.picture=dt[3].ToString();
  272. userControl13.age=dt[4].ToString();
  273. userControl13.jianjie=dt[5].ToString();
  274. userControl13.state=dt[6].ToString();
  275. userControl13.ip=dt[7].ToString().Trim();
  276. userControl13.setname(dt[1].ToString());
  277. userControl13.setimage((dt[3].ToString()).Trim());
  278. form.userlist.Add(userControl13);
  279. }
  280. foreach(UserControl1 dt in form.userlist)
  281. {
  282. if(dt.state=="0")
  283. form.panel4.Controls.Add(dt);
  284. }
  285. foreach(UserControl1 dt in form.userlist)
  286. {
  287. if(dt.state=="1")
  288. {
  289. form.panel4.Controls.Add(dt);
  290. }
  291. }
  292. }
  293. private void severdata_Closed(object sender, System.EventArgs e)
  294. {
  295. }
  296. private void severdata_Closing(object sender, System.ComponentModel.CancelEventArgs e)
  297. {
  298. }
  299. private void severdata_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
  300. {
  301. }
  302. }
  303. }