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;


根本没有获得到值,不知道问题出在哪里,请大家多帮忙,谢谢!!
...全文
847 12 打赏 收藏 转发到动态 举报
写回复
用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
  • 打赏
  • 举报
回复
。。。。。。。。。。。。。。。。。。。。。。。
利用代码生成器搭建Linq系统框架 本文介绍怎么样创建Linq项目框架。其中DAL层使用LinqTo Sql,BLL层使用CodeSimith模板生成实体类。 目的是推进linq技术的使用。 实例demo下载:linqTempDemo 一.CodeSimith生成Linq To Sql文件模板功能介绍 1、生成常用的增、删、改的逻辑方法。其写法与常规写法基本相同。已经经过测试 2、 2、 生成带有分页获取列表的方法,如下图。已经经过测试。 (a) a) 此方法中可自定义动态查询方法。 ( b)方法中准备了排序方法,我们可通过简单的注释一行代码,来实现列表排序功能。 3、针对单独类写了整体缓存方法,可以将数据缓存在BLL层,需要的可调用;缓存需要根据具体需求使用或改进。 二、二、 CodeSimith模板使用方法 1 1、此模版为CodeSimith模板,使用方法自然和其他方法一样,只需要按照你习惯了的CodeSimith成才 方法就可以; 2、其中引用的Linq自动生产类.dbml需要命名为LinqToSql.dbml; 三、三、 Linq项目架构的搭建 1、 1、 按照公司一般要求创建三层架构:项目名称如下图: 2、 2、项目引用关系: 3、 3、DAL层新建linqdbml文件。 (a) a)此处创建的LinqToSql自动生产类.dbml需要命名为LinqToSql.dbml; (b b)在LinqToSql.dbml文件中添加数据库实体映射类,如数据表,视图、存储过程。此处只需打开资 服务器源管理器拖入所需对象即可。 (c)修改LinqToSql.dbml的默认数据库连接字符串 默认连接字符串在AppConfig和Settings.settings中,如下图,我们为方便需要将其修改 为引用Web.Congfig中的数据库连接字符串。 使用时我们只需要上图标红处修改为: public LinqToSqlDataContext () : base(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString, mappingSource) { OnCreated(); } 即可。不要忘记引用所需程序集System.Configuration 4、 4、 用Codesimith模板生成BLL层逻辑代码类: (a) a) 配置Codesimith数据库连接 (b)选择表,生成代码文件 5、将生成的代码类引用在项目中: (a) a) 添加辅助类,如下图: (b) b) 添加程序集引用,如下图: (c)将生成代码文件复制到项目中,如下图: 6 6、自定义方法使用。模版生成类均使用public partial class属性,我们自定义方法不要直接添加到 生成类中 ,需要再添加一个public partial class:在此类文件中添加修改我们的自定义方法。 此时怎么引用BLL中的方法我就不用说了。 利用代码生成器搭建Linq系统框架现在就完成了。

62,046

社区成员

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

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

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

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