因为好几个页面都要连接数据库,所以我想把这些一样的代码单独放在一个cs文件里面,如b.cs:
namespace b
{
  public class DGConnection
  {
    public SqlConnection adminConn;
    public void bindgrid()
    {
    string DGConnString = "...这里是连接数据库的string语句";
    adminConn = new SqlConnection(DGConnString);
    }
  }
}
随后在需要连接数据库的页面中调用这个类,如a.cs中:
namespace a
{
public class AClass
{
  private void Page_Load(object sender, System.EventArgs e)
  {
    if(!Page.IsPostBack)
    {
      BindGrid();//数据库与datagrid绑定的函数
    }
  }
  private void BindGrid()
  {
b.DGConnection dgconn = new b.DGConnection();//创建b类的对象
dgconn.bindgrid();//创建对象后调用连接数据库的方法
string adminSQL = "SELECT * FROM test"; DataSet ds = new DataSet(); SqlDataAdapter adminAdapter = new SqlDataAdapter(adminSQL,adminConn);
adminAdapter.Fill(ds,"table1"); //dg是页面中datagrid的ID
dg.DataSource = ds.Tables["table1"].DefaultView;
dg.DataBind();
  }
}
}编译后报错:
行SqlDataAdapter adminAdapter = new SqlDataAdapter(adminSQL,adminConn);
adminConn在a.AClass中不存在这个adminConn的确是在b类中定义的,现在在a类中我要调用,该怎么办呢?或者我的一开始的思路就有问题吧,不知有哪位高手能解决数据库连接的代码复用的问题?

解决方案 »

  1.   

    把连接字符串最好放到Web.config中,以后可以随时调用,如下:
      

  2.   

    <appSettings>
    <add key="ConnectString" value="server=127。0。0。1;UID=sa;PWD=123546;DATABASE=project;connect timeout=3220"/>
    </appSettings>在CS文件中可以这样调用
    public static DataTable Get_Select_Table(string sql_str)           //执行查询,返回DataTable
    {
    SqlConnection myConnection;
    myConnection = new SqlConnection( ConnectString);                   
    SqlDataAdapter myCommand = new SqlDataAdapter(sql_str, myConnection);
    DataSet ds = new DataSet();
    myCommand.Fill(ds, "t1");
    return ds.Tables ["t1"]; }
      

  3.   

    首先感谢两位的回答。
    但如果不放在Web.config中呢?因为我现在做的项目已经分了结构,读写数据库的代码专门放在一个类库中,在其他页面的后台程序中调用这个类,所以我就提出上面的问题,比较急,在线等。
      

  4.   

    放到一个类里面,这个类有个静态的常量,不就可以了
    public static const sqlstring="连接字符串";
    调用的时候,类名.sqlstring
      

  5.   

    问题解决了,我在adminConn前面加了一个创建的b类对象dgconn,变成dgconn.adminConn就行了。不过还是谢谢大家,结帖!