无法从配置值

时间:2017-03-01 11:15:41

标签: c# asp.net sql-server

首先我知道这已被多次询问过,但我找不到任何与我的问题有关的内容。基本上我有文本输入我需要插入本地数据库,我已经多次检查我的连接字符串,并且很确定它不是问题。

<add name="ElectricsOnline" 
     connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\electricsonline.mdf;Integrated Security=True" 
     providerName="System.Data.SqlClient"/>

这是插入的方法

protected void btnSubmit_Click(object sender, EventArgs e)
{
        using (var connection = new SqlConnection("ElectricsOnline"))
        {
            connection.Open();

            var sqlStatement = "INSERT INTO Orders (FirstName, LastName, Phone, Address, Suburb, State, Postcode, Ctype, CardNo, ExpDate, Email) VALUES(@FirstName, @LastName, @Phone, @Address, @Suburb, @State, @Postcode, @Ctype, @CardNo, @ExpDate, @Email)";

            using (var cmd = new SqlCommand(sqlStatement, connection))
            {
                cmd.Parameters.AddWithValue("@FirstName", txtFirstname.Text);
                cmd.Parameters.AddWithValue("@LastName", txtLastname.Text);
                cmd.Parameters.AddWithValue("@Phone", txtPhone.Text);
                cmd.Parameters.AddWithValue("@Address", txtAddress.Text);
                cmd.Parameters.AddWithValue("@Suburb", txtSuburb.Text);
                cmd.Parameters.AddWithValue("@State", txtState.Text);
                cmd.Parameters.AddWithValue("@Postcode", txtPostcode.Text);
                cmd.Parameters.AddWithValue("@Ctype", ddlCtype.SelectedValue.ToString());
                cmd.Parameters.AddWithValue("@CardNo", txtCardno.Text);
                cmd.Parameters.AddWithValue("@ExpDate", txtExpDate.Text);
                cmd.Parameters.AddWithValue("@Email", txtEmail.Text);

                cmd.ExecuteNonQuery();
            }
        }

        Response.Redirect("CheckoutReview.aspx");
    }

源错误显示此

  

初始化字符串的格式不符合从索引0开始的规范。

     第22行:{
  第23行:
  第24行:使用(var connection = new SqlConnection(“ElectricsOnline”))
  第25行:{
  第26行:connection.Open();

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:3)

您不能直接使用配置文件中的连接的名称,因为new SqlConnection(...)本身需要连接字符串,而不是配置文件中的名称。

在使用连接字符串创建连接之前,需要从配置中检索连接字符串。按如下方式更改您的代码:

var connStr = System
    .Configuration
    .ConfigurationManager
    .ConnectionStrings["ElectricsOnline"]
    .ConnectionString;
using (var connection = new SqlConnection(connStr)) {
    ...
}

答案 1 :(得分:1)

new SqlConnection("ElectricsOnline")

我不知道你在哪里可以传递配置值的名称。您需要传入连接字符串。从配置中读取它并将其传递给构造函数。