当前位置:编程学习 > C#/ASP.NET >>

TCP QQ

using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;
using Microsoft.Win32;
using System.Data;
using System.Collections;

    public class DoTrans
    {
        //执行事务处理 
        string connStr;
        SqlConnection myConn;
        public DoTrans()
        {
            connStr = "Data Source=.;Initial Catalog=QQ;Integrated Security=True;";//User ID=sa;Password=
             myConn = new SqlConnection(connStr);
        }
        public DoTrans(string s)
        {
            connStr = s;
            myConn = new SqlConnection(connStr);
        }
        public bool DoTran(string transactionString)
        {

            //建立连接并打开 

            myConn.Open();

            SqlCommand myComm = new SqlCommand();
            SqlTransaction myTran;
            //创建一个事务 
            myTran = myConn.BeginTransaction(System.Data.IsolationLevel.Serializable, "begin");
            //从此开始,基于该连接的数据操作都被认为是事务的一部分 
            //下面绑定连接和事务对象 
            myComm.Connection = myConn;
            myComm.Transaction = myTran;
            try
            {
                myComm.CommandText = transactionString;
              int i=  myComm.ExecuteNonQuery();
                //提交事务 
                myTran.Commit();
                if (i == 1) return true;
                else
                    return false;

            }
            catch (Exception err)
            {
                //更新错误,回滚到指定存储点 
                myTran.Rollback();
                return false;
            }
            finally
            {
                myConn.Close();
            }

        }
        public bool DoManyTran(string[] tranStrs)
        {

            //建立连接并打开 
            int ii = 0;
            myConn.Open();

            SqlCommand myComm = new SqlCommand();
            SqlTransaction myTran;
            //创建一个事务 
            myTran = myConn.BeginTransaction(System.Data.IsolationLevel.Serializable, "begin");
            //从此开始,基于该连接的数据操作都被认为是事务的一部分 
            //下面绑定连接和事务对象 
            myComm.Connection = myConn;
            myComm.Transaction = myTran;
            try
            {
                if (tranStrs != null)
                {
                    for (int i = 0; i < tranStrs.Length; i++)
                    {
                        myComm.CommandText = tranStrs[i];
                        ii=myComm.ExecuteNonQuery();
                    }
                }
                //提交事务 
                myTran.Commit();
                return true;

            }
            catch (Exception err)
            {
                //更新错误,回滚到指定存储点 
                myTran.Rollback("begin");
                return false;
            }
            finally
            {
                myConn.Close();
            }

        }
        public bool DoManyTran(Hashtable sqls)
        {
            //建立连接并打开 

            myConn.Open();

            SqlCommand myComm = new SqlCommand();
            SqlTransaction myTran;
            //创建一个事务 
            myTran = myConn.BeginTransaction(System.Data.IsolationLevel.Serializable, "begin");
            //从此开始,基于该连接的数据操作都被认为是事务的一部分 
            //下面绑定连接和事务对象 
            myComm.Connection = myConn;
            myComm.Transaction = myTran;
            try
            {
                if (sqls.Count > 0)
                {
                    for (int i = 1; i <= sqls.Count; i++)
                    {
                        myComm.CommandText = (string)sqls[i.ToString()];
                        int m = myComm.ExecuteNonQuery();
                    }
                }
                //提交事务 
                myTran.Commit();
                return true;

            }
            catch (Exception err)
            {
                //更新错误,回滚到指定存储点 
                myTran.Rollback("begin");
                return false;
            }
            finally
            {
                myConn.Close();
            }
        }
        public DataTable SelTran(string transactionString)
        {
            //建立连接并打开 

            myConn.Open();

            SqlCommand myComm = new SqlCommand();
            SqlTransaction myTran;
            DataTable ds = new DataTable();
            //创建一个事务 
            myTran = myConn.BeginTransaction(System.Data.IsolationLevel.ReadUncommitted, "begin");
            //从此开始,基于该连接的数据操作都被认为是事务的一部分 
            //下面绑定连接和事务对象 
            myComm.Connection = myConn;
            myComm.Transaction = myTran;
            try
            {
                myComm.CommandText = transactionString;
                SqlDataAdapter sda = new SqlDataAdapter(myComm);
                sda.Fill(ds);
                //提交事务 
                myTran.Commit();
                return ds;

            }
            catch (Exception err)
            {
                //更新错误,回滚到指定存储点 
                return null;
            }
            finally
            {
                 myConn.Close();
            }
        }


    }

        }
 哪错了啊 为什么就是连接上数据但是我却无法运行呢?
--------------------编程问答-------------------- 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.Collections;
namespace tcpS
{
    public partial class Form1 : Form
    {
        Hashtable onLineUsers;
        TcpListener listener;
        Thread listenThread;
        delegate void DelCls1(string x);
        DelCls1 listView1AppendDel;
        DoTrans dotrans;
        public Form1()
        {
            InitializeComponent();
            onLineUsers = new Hashtable();
            listener = new TcpListener(6666);
            listenThread =
                new Thread(new ThreadStart(listen));
            dotrans = new DoTrans();
            listView1AppendDel = new DelCls1(listViewAppend);
        }
        /// <summary>
        /// 监听6666端口,接受所有客户端程序的链接请求
        /// 建立通信信道
        /// </summary>
        private void listen()
        {
            listener.Start();//开始监听6666,看有人连我么
            while (true)
            {
                TcpClient client = listener.AcceptTcpClient();//阻塞
                listBox1.Invoke(listView1AppendDel, "某个客户端已经连上。。。");
                Thread serviceT =
                    new Thread(new ParameterizedThreadStart(service));
                serviceT.Start(client);
            }
        }
        private void listViewAppend(string message)
        {
            listBox1.Items.Add(message);
        }
        /// <summary>
        /// 为C提供它所要求的服务
        /// </summary>
        /// <param name="C"></param>
        private void service(object bj)
        {
            TcpClient C = bj as TcpClient;
            NetworkStream ns = C.GetStream();
            byte[] mss;
            byte[] replay;
            while (true)
            {
                mss = new byte[1024];
                try
                {
                    ns.Read(mss, 0, 1024);
                    string message = Encoding.UTF8.GetString(mss);
                    string[] ms = message.Split(new char[] { '^' });
                    switch (ms[0])
                    {
                        case "login"://login^zjl^123^
                            DataTable dt = dotrans.SelTran("select * from users where tpwd='" + ms[1] + "'");
                            if (dt == null || dt.Rows.Count == 0)
                            {//无此用户
                                replay = Encoding.UTF8.GetBytes("login^nouser^");
                                listBox1.Invoke(listView1AppendDel,"以不存在的用户名登录:"+ms[1]);
                            }
                            else
                            {
                                if (dt.Rows[0]["password"].ToString() == ms[2])
                                {//登录成功
                                    replay = Encoding.UTF8.GetBytes("login^ok^");
                                    onLineUsers.Add(ms[1], C);
                                    listBox1.Invoke(listView1AppendDel, "正确登录:" + ms[1]);
                                }
                                else
                                {//密码错误
                                    replay = Encoding.UTF8.GetBytes("login^pwdWrong^");
                                    listBox1.Invoke(listView1AppendDel, "以用户名"+ ms[1]+"登录,但密码错误!!" );
                                }
                            }
                            ns.Write(replay, 0, replay.Length);
                            ns.Flush();
                            break;
                        case "chat"://chat^zjl^awg^safsa^
                            TcpClient tempTC = onLineUsers[ms[2]] as TcpClient;
                            NetworkStream tempNS = tempTC.GetStream();
                            ns.Write(mss, 0, mss.Length);
                            listBox1.Invoke(listView1AppendDel, ms[1]+"对"+ms[2]+"说:"+ms[3]);
                            break;
                        case "quit":
                            onLineUsers.Remove(ms[1]);
                            listBox1.Invoke(listView1AppendDel, ms[1] + "退出了!!");
                            break;
                        case "adduser"://adduser^zjl^123^张飞^
                            if (dotrans.DoTran("insert into users values('" + ms[1] + "','" + ms[3] + "','" + ms[2] + "')"))
                            {
                                replay = Encoding.UTF8.GetBytes("adduser^ok^");
                                listBox1.Invoke(listView1AppendDel, "以用户名" + ms[1] + "注册成功!!");
                            }
                            else
                            {
                                replay = Encoding.UTF8.GetBytes("adduser^error^");
                                listBox1.Invoke(listView1AppendDel, "以用户名" + ms[1] + "注册不成功!!");
                            }
                            ns.Write(replay, 0, replay.Length);
                            ns.Flush();
                            break;
                        case "refreshU"://UserList^zjl^awg^zj^zxm^....
                            //onLineUsers的key:所有在线用户的编号
                            string replayStr = "UserList^";
                            foreach (object obj in onLineUsers.Keys)
                            {
                                replayStr += obj.ToString() + "^";
                            }
                            replay = Encoding.UTF8.GetBytes(replayStr);
                            ns.Write(replay, 0, replay.Length);
                            ns.Flush();
                            listBox1.Invoke(listView1AppendDel, "某用户请求更新在线用户列表!");
                            break;
                    }
                }
                catch { }
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {
            listBox1.Items.Add( "服务器已经启动!");
            listenThread.Start();
--------------------编程问答-------------------- 啥问题呀
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,