注册 登录
编程论坛 ASP.NET技术论坛

怎么解决烦琐的数据库连接^^^^^^^

jilonghao 发布于 2008-12-03 20:16, 1999 次点击
最近,我遇到一个非常苦恼的问题:在C#中,许多窗体都需要使用到数据库中的内容,可是每个窗体中都得输入连接字符串,连接对象,再打开……
有没有更好的方法,能只连接一次,哪个需要就调用的,请大家帮帮忙????
9 回复
#2
yep2008-12-03 21:46
分层来写啊 ,在连接数据库层写相关的代码
#3
wolf442008-12-03 21:54
网上有现成的sqlhelper 直接用就可以了
#4
小红2008-12-03 22:57
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Data.Sql;
using System.Security.Principal;

/// <summary>
/// Summary description for Class1
/// </summary>
namespace DataBase
{
    public class DBCom
    {
        //取得一个数据库的连接
        public  static SqlConnection GetConnection()
        {
            
            SqlConnection sqlconn = new SqlConnection();
            try
            {
               
                string strCon = "server=192.168.1.88;database=xixi;uid=xiaoxiao;pwd=1234";
               
                sqlconn.ConnectionString = strCon;
            
                return sqlconn;

            }
            catch (SqlException e)
            {
                System.Console.WriteLine(e.Message.ToString());
                return null;
            }
        }

        //========================================================================

        //执行sql语句返回所影响的行数
        public int ExecuteSql(string sql)
        {
           
            SqlConnection conn = DBCom.GetConnection();
            SqlCommand cmd = conn.CreateCommand();
             = sql.Trim();
            try
            {
                conn.Open();
                int count = cmd.ExecuteNonQuery();
                return count;
            }
            catch (SqlException ex)
            {
                System.Console.WriteLine(ex.Message.ToString());
                return 0;
            }
        }

        //执行存储过程
        public  int ExecuteProc(string procName, SqlParameter[] sp)
        {
            SqlConnection conn = DBCom.GetConnection();
            conn.Open();
            SqlCommand cmd = conn.CreateCommand();
             = procName.Trim();
             = CommandType.StoredProcedure;

            foreach (SqlParameter s in sp)
            {
                cmd.Parameters.Add(s);
            }

            try
            {
                int i = cmd.ExecuteNonQuery();
                conn.Close();
                return i;
            }
            catch (System.Exception ex)
            {
                System.Console.WriteLine(ex.Message.ToString());
                return 0;
            }
        }

        //==============================================================================

        //根据sql 返回数据
        public  SqlDataReader GetDataReader(string sql)
        {
            SqlConnection conn = DBCom.GetConnection();
            SqlCommand cmd = conn.CreateCommand();
             = sql.Trim();
            try
            {
                conn.Open();
                SqlDataReader dr = cmd.ExecuteReader(System.);
                return dr;
            }
            catch (SqlException ex)
            {
                System.Console.WriteLine(ex.Message.ToString());
                return null;
            }
        }

        //===========================================================================

        public  DataSet GetDataSet(string Sql, string TableName)
        {
            SqlConnection conn = DBCom.GetConnection();
            try
            {
                conn.Open();
                SqlDataAdapter adapter = new SqlDataAdapter(Sql, conn);
                DataSet ds = new DataSet();
                adapter.Fill(ds, TableName);
                conn.Close();
                return ds;
            }
            catch (SqlException ex)
            {
                System.Console.WriteLine(ex.Message.ToString());
                return null;
            }
        }

        //通过存储过程返回 数据集
        public  DataSet GetDataSet1(string procname, SqlParameter[] sp, string tableName)
        {
            SqlConnection conn = DBCom.GetConnection();
            SqlCommand cmd = new SqlCommand();
            SqlDataAdapter adapter = new SqlDataAdapter();
            DataSet ds = new DataSet();

             = CommandType.StoredProcedure;
             = procname.Trim();

            try
            {
                conn.Open();
                cmd.Connection = conn;
                foreach (SqlParameter p in sp)
                {
                    if (p == null)
                    {
                        break;
                    }
                    else
                    {
                        cmd.Parameters.Add(p);
                    }

                }

                //cmd.ExecuteNonQuery();
                adapter.SelectCommand = cmd;
                adapter.Fill(ds, tableName);
                conn.Close();
                return ds;
            }
            catch (SqlException ex)
            {
                System.Console.WriteLine(ex.Message.ToString());
                return null;
            }
        }
        public string re(string a)
        {
            string s = a.Replace("-_COMPART_-", "");
            while (s.Length > 0)
            {
                if (s.LastIndexOf("\r") == s.Length - 1 || s.LastIndexOf("\n") == s.Length - 1)
                {
                    s = s.Remove(s.Length - 1, 1);
                }
                else
                {
                    break;
                }
            }
            while (s.Length > 0)
            {
                if (s.IndexOf("\r") == 0 || s.IndexOf("\n") == 0)
                {
                    s = s.Remove(0, 1);
                }
                else
                {
                    return s;
                }
            }
            return s;
        }
        public int ExecuteProc1(string procName, SqlParameter[] sp)
        {

            SqlConnection conn = DBCom.GetConnection();
            conn.Open();
            SqlCommand cmd = conn.CreateCommand();

             = procName.Trim();

             = CommandType.StoredProcedure;



            foreach (SqlParameter s in sp)
            {

                try
                {

                    cmd.Parameters.Add(s);

                }

                catch (Exception ex)
                {

                    System.Console.WriteLine(ex.Message.ToString());

                    return 0;

                }

            }



            try
            {

                int i = cmd.ExecuteNonQuery();

                cmd.Parameters.Clear();

                conn.Close();

                return i;

            }

            catch (System.Exception ex)
            {

                System.Console.WriteLine(ex.Message.ToString());

                return 0;

            }

        }



    }
}
#5
hebingbing2008-12-04 08:44
sqlhelp
微软的……
#6
jilonghao2008-12-05 15:55
hehe
谢谢了,的确可行!!!!!!!!!!
#7
zuglog21332008-12-05 18:10
还可以在配置文件中写
#8
zhjesse2008-12-07 10:56
分层

比他写个数据库操作类

然后需要的地方调用就可以了
#9
守望♂幸福2008-12-09 20:36
有遇到楼上的姐姐
#10
zw831200302008-12-10 09:43
回复 楼主 jilonghao 的帖子
数据库连接不算烦琐吧
1