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();
            }
        }
    }        }
 哪错了啊 为什么就是连接上数据但是我却无法运行呢?

解决方案 »

  1.   

    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();