我刚开始学习使用数据库连接的CS程序,现在发觉1个问题。在每个button的Click代码中都需要写上:
SqlConnection con = new SqlConnection("server=服务器IP;database=数据库;uid=数据库帐号;pwd=数据库密码 ");
…………
等语句以后才能写其他执行语句。我虽然不知道该怎么解决,但是知道这样的方式肯定是不科学的。请教高手指点

解决方案 »

  1.   

    例如button1是登录按钮
    我现在必须写上
    SqlConnection con = new SqlConnection("server=.;database=Dyczbt;uid=sa;pwd= ");
                SqlCommand cmd = new SqlCommand();
                cmd.Connection = con;
                cmd.CommandText =以下是SQL代码;
                  具体执行语句;然后button2是修改密码按钮
    还需要重复写上SqlConnection con = new SqlConnection("server=.;database=Dyczbt;uid=sa;pwd= ");
                SqlCommand cmd = new SqlCommand();
                cmd.Connection = con;
                cmd.CommandText =以下是SQL代码;
                  具体执行语句;
    这样显然是不科学的~~~
      

  2.   

    封装到一个类里面
    public class SqlControler
    {
        public static SqlConnection getSqlConnection()
        {
            return new SqlConnection("server=.;database=Dyczbt;uid=sa;pwd= ");
        }
    }
    要用的时候
        SqlConnection conn=SqlControler.getSqlConnection();
    按照这个思想,你可以再拓展以下。
      

  3.   

    既然你已经发现有很多代码重复,那为什么不把他们提取出来写一个可以复用的方法甚至是单独写一个专门操作数据库的类呢?可以自己试着写写,不会的话网上找这方面(SqlHelper)的代码吧。等你学了三层之后会更深入的了解
      

  4.   

    可以将
    SqlConnection con = new SqlConnection("server=.;database=Dyczbt;uid=sa;pwd= ");
      SqlCommand cmd = new SqlCommand();
    放在——load 之前当做全局变量,
    每次调用open()之前打开连接,用了之后再用close()关掉。可以减少这些代码
      

  5.   


    using System;
    using System.Data;
    using System.Configuration;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;
    using System.Data.Sql;
    using System.Data.SqlClient;/// <summary>
    ///比较简单的数据库访问类 希望能对你有所帮助 
    /// </summary>
    public class db_conn
    {
        SqlConnection conn = new SqlConnection();
        public db_conn()
        {
            conn.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["conn"].ConnectionString;
            conn.Open();
        }
        /// <summary>
        /// 从数据库中查询数据
        /// </summary>
        /// <param name="strconn"></param>
        /// <returns></returns>
        public System.Data.DataSet getdb(string strconn)
        {
            DataSet ds = new DataSet();
            SqlDataAdapter dap = new SqlDataAdapter(strconn, conn);
            dap.Fill(ds);
            if (ds.Tables[0].Rows.Count > 0)
            {
                return ds;
                conn.Close();
            }
            else
            {
                return null;
                conn.Close();
            }
        }
        /// <summary>
        /// 操作数据库
        /// </summary>
        /// <param name="strconn"></param>
        /// <returns></returns>
        public bool updatedb(string strconn)
        {
            try
            {
                SqlCommand cmd = new SqlCommand(strconn, conn);
                int i = cmd.ExecuteNonQuery();
                if (i != 0)
                {
                    HttpContext.Current.Response.Write("<script language='javascript'>alert('数据库更新成功')</script>");
                    //this.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('数据库更新成功')</script>");
                    return true;
                }
                else
                {
                    HttpContext.Current.Response.Write("<script language='javascript'>alert('数据库更新失败')</script>");
                    //this.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('数据库更新失败')</script>");
                    return false;
                }
                conn.Close();
            }
            catch (Exception e)
            {
                return false;
                throw;
                HttpContext.Current.Response.Write("<script language='javascript'>alert('数据库更新过程中出现问题')</script>");
                conn.Close();
            }
        }
    }
      

  6.   

    连接字符串写在app.config或XML文件中
    通过数据库操作类操作数据库如 sqlhelper
      

  7.   

    using System.Data.SqlClient;
    private static string url="server=.;database=Dyczbt;uid=sa;pwd= ";
    public static sqlconnection con = new sqlconnection(url);
    string sql="查询命令";
    sqlcommand com = new sqlcommand();
    con.open();
    ....
    ...
    ...con.close();
      

  8.   

    你可以新创建一DBHelper类,在该类里面专门添加连接字符串与connection对象,如:
    //连接字符串
    private static string connString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=E:\面向对象--C#练习\考前练习\test2\test2\test2.mdf;Integrated Security=True;User Instance=True";
    //创建connecttion对象
            public static SqlConnection connection = new SqlConnection(connString );
    然后再再用到时调用就行!
      

  9.   

    把connection对象声明在类里,成为成员属性,就可以通用了。
    或者可以把连接数据库字符串和操作的具体功能块封装在一个帮助类里面,用的时候调用就行了。