我在web.config中的数据库连接是
<appSettings>
<add key="ConnectionString" value="Data Source=.;database=SystemDB;UID=sa;Password=123456;Persist Security Info=True;"/>
</appSettings>
得到的时候是这样的
protected static SqlConnection myconn = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
但问题是这样的 登陆能行但是进去后多点击得几下,就出现ConnectionString 属性尚未初始化。这个问题咋搞哦???
这段代码没有错,错的应该是调用的地方。
使用 SqlConnection的时候,不要把它定义为 static 的,随时使用,随时 new 。
您的意思是说在每个地方使用都重新定义,,,,
@沅江: 不知道你的代码结构是怎么样,并不一定要重新定义。这得看你对代码的理解能力。
@程序猿.码农: 我现在在程序里主要用的SqlCommand和SqlDataAdapter这两个来对数据的操作,但不知道是哪儿出问题了,还请你指点啊?我以前是做php和asp,刚学没多久。
@沅江: 说实话,你说的都没啥用处,这跟你用了哪个类没啥关系,而要看你代码的结构。
@程序猿.码农: 你看下这段代码吧
protected static SqlConnection myconn = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
//打开数据库
private static void openConn()
{
if (myconn.State == ConnectionState.Closed)
{
myconn.Open();
}
}
//关闭数据库
private static void closeConn()
{
if (myconn.State == ConnectionState.Open)
{
myconn.Close();
}
}
//关闭数据库
public static void cConn()
{
if (myconn.State == ConnectionState.Open)
{
myconn.Close();
}
}
//返回数据集
public static DataSet GreatDs(string sql)
{
SqlConnection conn = myconn;
closeConn();
SqlDataAdapter sda = new SqlDataAdapter(sql, conn);
DataSet ds = new DataSet();
sda.Fill(ds);
return ds;
}
//取得指定游标内数据集//取对应数据 StartIndex为起始游标 PageSize为显示条数 主要用于分页
public static DataSet GreatDs(string sql, int StartIndex, int PageSize, string tablename)
{
closeConn();
SqlDataAdapter Dar = new SqlDataAdapter(sql, myconn);
DataSet ds = new DataSet();
Dar.Fill(ds, StartIndex, PageSize, tablename);
return ds;
}
//执行无返回sql语句
public static void DoSql(string sql)
{
try
{
openConn();
SqlCommand cmd = new SqlCommand(sql, myconn);
cmd.ExecuteNonQuery();
closeConn();
}
catch
{
}
closeConn();
}
@沅江: 所有代码改成这样:
public static DataSet GreatDs(string sql)
{
using(SqlConnection conn = new SqlConnecton(ConfigurationManager.AppSettings["ConnectionString"]))
{
conn.Open();
SqlDataAdapter sda = new SqlDataAdapter(sql, conn);
DataSet ds = new DataSet();
sda.Fill(ds);
return ds;
}
}
protected 关键字将限定变量的使用范围,你可以定义成 public static