ConfigurationManager.ConnectionStrings获取不到值

java__net 2008-08-20 10:38:26
在我的解决方案中我建了一个程序集,里面有2个文件:
DataAccessProvider.class

using System;
using System.Collections.Generic;
using System.Text;
using System.Data.Common;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Data.OracleClient;
using System.Transactions;
namespace Taobao.SqlHelp
{
public class DataAccessProvider
{
private static string connString;
private static string providerName;
static DataAccessProvider()
{
ConnectionStringSettings setting = ConfigurationManager.ConnectionStrings["DSN"];
connString = setting.ConnectionString;
providerName = setting.ProviderName;
System.Diagnostics.Debug.WriteLine(providerName);
}
public static DbConnection GetConneciton()
{
DbProviderFactory factroy = DbProviderFactories.GetFactory(providerName);
DbConnection conn = factroy.CreateConnection();
conn.ConnectionString = connString;
return conn;
}

private static DbDataAdapter GetDataAdapter()
{
DbProviderFactory factroy = DbProviderFactories.GetFactory(providerName);
DbDataAdapter da = factroy.CreateDataAdapter();
return da;
}

public static DbCommand GetCommand(string commandText, CommandType commandType)
{
DbConnection conn = GetConneciton();
DbCommand cmd = conn.CreateCommand();
cmd.CommandText = commandText;
cmd.CommandType = commandType;
return cmd;
}

public static DbDataReader GetDataReader(string commandText, CommandType commandType)
{
DbCommand cmd = GetCommand(commandText, commandType);
cmd.Connection.Open();
DbDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
return reader;
}

public static bool ExecuteNonQuery(string commandText, CommandType commandType)
{
DbCommand cmd = GetCommand(commandText, commandType);
DbConnection conn = cmd.Connection;
DbTransaction trans = null;
bool result;
try
{
conn.Open();
trans = conn.BeginTransaction();
cmd.ExecuteNonQuery();
trans.Commit();
result = true;
}
catch (SqlException)
{
if (trans != null)
{
trans.Rollback();
}
result = false;
}
finally
{
if (conn != null && conn.State == ConnectionState.Open)
{
conn.Close();
}
}
return result;
}

public static object ExecScalar(string commandText, CommandType commandType)
{
DbCommand cmd = GetCommand(commandText, commandType);
DbConnection conn = cmd.Connection;
conn.Open();
object obj = cmd.ExecuteScalar();
conn.Close();
return obj;
}

public static DataTable GetDataTable(string commandText, CommandType commandType)
{
return GetDataTable(commandText, commandType, 0, 0);
}

public static DataTable GetDataTable(string commandText, CommandType commandType, int start, int count)
{
DbDataAdapter da = GetDataAdapter();
DbCommand cmd = GetCommand(commandText, commandType);
da.SelectCommand = cmd;
DataTable dt = new DataTable();
DbConnection conn = cmd.Connection;
conn.Open();
if (start == 0 && count == 0)
{
da.Fill(dt);
}
else
{
da.Fill(start, count, dt);
}
conn.Close();
return dt;
}
}
}



App.config

<configuration>
<connectionStrings>
<add name="DSN" connectionString="server=(local);DataBase=dataname;uid=user;pwd=" providerName="System.Data.SqlClient"/>
</connectionStrings>
</configuration>


然后再其他的程序集中引用这个程序集,结果报错:
"***.DataAccessProvider”的类型初始值设定项引发异常

后来通过断点发现,在

ConnectionStringSettings setting = ConfigurationManager.ConnectionStrings["DSN"];
connString = setting.ConnectionString;


根本没有获得到值,不知道问题出在哪里,请大家多帮忙,谢谢!!
...全文
957 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
tonyze 2008-08-20
  • 打赏
  • 举报
回复 1
放错位置了吧,放下web.config里试下
java__net 2008-08-20
  • 打赏
  • 举报
回复 1
程序集里有个App.config,引用程序集的站点有个web.config,我是不是应该把connectionString节点放到web.config里啊,我现在有点搞不清楚,使用程序集类的时候,它会去哪个config文件里找了,可我2个文件都有,它依然是找不到,很奇怪!
jack20080808 2008-08-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hanhenry 的回复:]
错了 你看这个行不string setting = ConfigurationManager.ConnectionStrings["DSN"].ConnectionString;
[/Quote]
ljqingas 2008-08-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hanhenry 的回复:]
错了 你看这个行不string setting = ConfigurationManager.ConnectionStrings["DSN"].ConnectionString;
[/Quote]
tdtxflsh 2008-08-20
  • 打赏
  • 举报
回复
ConfigurationManager.ConnectionStrings["DSN"].ConnectionString
贝克汉鸭 2008-08-20
  • 打赏
  • 举报
回复
你web.config中的connectionString 的c大写
ReyZhang 2008-08-20
  • 打赏
  • 举报
回复
真不行,把配置节放到<appSettings>节点下试试

ConfigManager.AppSettings[]
hanhenry 2008-08-20
  • 打赏
  • 举报
回复
错了 你看这个行不string setting = ConfigurationManager.ConnectionStrings["DSN"].ConnectionString;
hanhenry 2008-08-20
  • 打赏
  • 举报
回复
ConnectionStringSettings setting = ConfigurationManager.ConnectionStrings["DSN"].ConnectionString
xhan2000 2008-08-20
  • 打赏
  • 举报
回复
用索引看看
xiaoyu512 2008-08-20
  • 打赏
  • 举报
回复
string strCon = ConfigurationManager.ConnectionStrings["DSN"].ToString();
这样试试
java__net 2008-08-20
  • 打赏
  • 举报
回复
。。。。。。。。。。。。。。。。。。。。。。。

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧