当前位置: 代码迷 >> C# >> C#多线程访问数据库出错
  详细解决方案

C#多线程访问数据库出错

热度:554   发布时间:2016-05-05 05:31:27.0
C#多线程访问数据库报错
本帖最后由 ericmpdeng 于 2014-12-18 17:12:19 编辑
  public static string my_sql = "", my_tabale = "", my_field = "", my_data="";
        public static SqlConnection my_con;
        public static string m_str_sqlcon = "Data Source=127.0.0.1;Database=em;User id=sa;PWD=''";
        #endregion
        public static SqlConnection getcon()
        {
            
                my_con = new SqlConnection(m_str_sqlcon);
                my_con.Open();
                return my_con;
            }        
        public void con_close()
        {
            if (my_con.State == ConnectionState.Open)
            {
                my_con.Close();
                my_con.Dispose();
            }
        }
        public SqlDataReader getcom(string sqlstr)
        {

            
            SqlCommand my_com = my_con.CreateCommand();
            my_com.CommandText = sqlstr;
            SqlDataReader my_read = my_com.ExecuteReader();
            return my_read;


        }//只读方式打开数据库
        public void getsqlcom(string sqlstr)
        {
         
            SqlCommand sqlcom = new SqlCommand(sqlstr, my_con);
            sqlcom.ExecuteNonQuery();
            sqlcom.Dispose();
           
        }//对数据库执行添加删除操作
        public DataSet getdataset(string sqlstr, string tablename)
        {
            
            
                SqlDataAdapter sqlda = new SqlDataAdapter(sqlstr, my_con);
                DataSet my_data = new DataSet();
                my_data.Clear();
                sqlda.Fill(my_data, tablename);
                return my_data;
            
           

        }
    }
}
多线程调用访问数据库的时候,提示访问的连接已关闭,大家指点啊,应该怎么做?用数据库连接池还是队列?应该怎么改啊?
------解决思路----------------------
如果你是多个人同时进银行排队,那么真正到窗口的时候,要么是一个一个去,要么是分别同时去不同的窗口,不能俩人一起到一个窗口办理不同的业务,人家忙不过来
------解决思路----------------------
原来的这个底层物理才能高速地共享 -->  原来的这个底层物理连接才能高速地共享

如果你要自己开发什么连接池,你应该使用没有连接池机制的更底层的类库上去开发。不应该去多余地用 SqlConnection。
  相关解决方案