12

我正在学习通过单击按钮从文本框中写入数据库。web.config我已经在我的文件中指定了我的 NorthWind 数据库的连接字符串。但是我无法访问后面代码中的连接字符串。

这是我尝试过的。

protected void buttontb_click(object sender, EventArgs e)
{
    System.Configuration.Configuration rootwebconfig = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("/Mohtisham");
    System.Configuration.ConnectionStringSettings constring;
    constring = rootwebconfig.ConnectionStrings.ConnectionStrings["northwindconnect"];
    SqlConnection sql = new SqlConnection(constring);

    sql.Open();
    SqlCommand comm = new SqlCommand("Insert into categories (categoryName) values ('" + tb_database.Text + "')", sql);
    comm.ExecuteNonQuery();
    sql.Close();
}

我收到一个工具提示错误

SqlConnection sql = new SqlConnection(constring);

作为

System.data.SqlClient.Sqlconnection.Sqlconnection(string) 有一些无效参数。

我想从web.configin加载连接字符串constring

4

4 回答 4

11

您可以简单地给Name您的ConnectionStringinweb.config文件并执行以下操作:

网络配置:

<add name="ConnectionStringName"  connectionString=YourServer"; Initial Catalog=YourDB; Integrated Security=True"/>

代码背后:

SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionStringName"].ToString());
于 2013-03-21T06:39:20.283 回答
8

那是因为ConnectionStrings集合是ConnectionStringSettings对象的集合,但SqlConnection构造函数需要一个string参数。所以你不能自己进去constring

试试这个。

SqlConnection sql = new SqlConnection(constring.ConnectionString);
于 2013-03-21T06:27:44.630 回答
4

试试这个

readonly SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["northwindconnect"].ToString());
于 2013-03-21T06:31:16.720 回答
0

我会建议你创建一个函数而不是直接访问 web.config 文件,如下所示

    public static string GetConfigurationValue(string pstrKey)
    {
        var configurationValue = ConfigurationManager.AppSettings[pstrKey];
        if (!string.IsNullOrWhiteSpace(configurationValue))
            return configurationValue;

        throw (new ApplicationException(
            "Configuration Tag is missing web.config. It should contain   <add key=\"" + pstrKey + "\" value=\"?\"/>"));

    }

并在您的应用程序中使用此功能

于 2013-03-21T06:36:56.543 回答