.net的配置文件(无法传递正确的值)

时间:2011-08-30 11:19:54

标签: sql sql-server vb.net configuration-files

我的配置文件中的一个exert看起来像这样。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings>
    <add key="loglocal" value="C:\here.txt" />
    <add key="ConnString" value="Data Source=DBNAME;InitialCatalog=CataName;Integrated Security=True"/>
    <add key="UppBound" value="100" />
    <add key="LowBound" value="100" />
    </appSettings>
</configuration

我正在尝试将一些值传递到我的.net程序中,唯一有效的是loglocal,它会选择一个目录字符串。

我可以将我的界限传递给查询,但我无法传递连接字符串并打开连接。

我在传递长查询之前尝试传入我自己的引号集,如:

Dim SQLCONN as new SqlConnection("""" & nameofconfvalue & """")

作为参考,我的整个代码都是这样的。

Public Class Form1

Dim ConfUpperBound as Integer = Configuration.AppSettings("UppBound")
Dim ConfConnString as String = Configuration.AppSettings("ConnString")

Private Sub Button1_Click(ByVal sender as System.Object, ByVal e as System.EventArgs) Handles Button1.Click
Dim SQLCONN as new SqlConnection("<either from config(fails) or hardcoded(works)>")

//fails on the below line (cannot open Connection)
SQLCONN.Open()

//I can successfully pass in values in query so I know i can connect to conf file
Dim SQLCMD as New SqlCommand("myquery etc etc")    
SQLCMD.ExecuteNonQuery()

SQLCONN.Close()

End Sub
End Class

编辑:我可以在使用Visual Studio 2005时完美地传入字符串。但是当使用VS 2003和loiwer .net框架时,它不会让我,除非我硬编码

可以在VS的这些实例之一上启用/禁用某些内容吗?或者这可能只是旧版本.net的错误?我想我在2003年使用1.1 ??(必须检查)。

2 个答案:

答案 0 :(得分:1)

ConfigurationSettings.AppSettings方法返回String。因此,您有两种选择:

1)将您的变量声明为String:

Dim ConfUpperBound as String = ConfigurationSettings.AppSettings("UppBound")

2)将字符串值转换为整数:

Dim ConfUpperBound as Int = Convert.ToInt32(ConfigurationSettings.AppSettings("UppBound"))

答案 1 :(得分:1)

您使用的是什么版本的.net?如果您使用的是3.5或更高版本,请不要将其放在appSettings区域,而是将其放在connectionStrings部分。

要将连接字符串读入代码,请使用ConfigurationSettings类,如下所示:

Using cn As New SqlConnection(ConfigurationManager.ConnectionStrings("FooBar").ConnectionString)