我的配置文件中的一个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 ??(必须检查)。
答案 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)