Member 14324865 Ответов: 2

Как же это решить? System.argumentexception: "формат строки инициализации не соответствует спецификации, начинающейся с индекса 0".


Привет.

Я использую VS2019. Я получаю систему.ArgumentException: 'формат строки инициализации не соответствует спецификации, начинающейся с индекса 0.'. Как мне решить эту проблему?

Вот код для aspx.cs:
используя системы.Веб.Пользовательского интерфейса.WebControls;
использование системы.ИО;
использование System.Data;
использование системы.Конфигурация;
используя системы.Данных.Поставщики sqlclient;

пространство имен Computer_Project_5
{
общественные частичное Фото класс : система.Веб.Пользовательского интерфейса.Страницы
{
охраняемых недействительными в(объект отправителя, EventArgs в электронной)
{
если (!это.IsPostBack)
{
string constr = ConfigurationManager.ConnectionStrings["ConnectionString"].Параметр connectionString;

используя (sqlconnection с соед = новый объект sqlconnection("параметр connectionString"))
{
Коннектикут.ConnectionString = "сервер=[MSSQLLocalDB];база данных=[ConnectionString];Trusted_Connection=true";
using (SqlDataAdapter sda = new SqlDataAdapter("SELECT * FROM Photos", conn))
{
DataTable dt = новый DataTable();
ПДД.Заполнить(ДТ);
gvImages.Источник данных = dt;
gvImages.Привязку();
}
}
}
}


Здесь на веб -.Конфиг:
<соединительные нити>
&ЛТ;добавить имя="класс defaultconnection" свойства connectionString="источник данных=(на localdb)\MSSQLLocalDB;ключевое слово attachdbfilename="|параметр datadirectory|\Паш-проекта компьютера 5-20190423044956.МДФ";начальный каталог="Паш-проекта компьютера 5-20190423044956";Комплексная безопасность=истина"
="" имя_поставщика="системы.Данных.Sqlclient как"&ГТ;
&ЛТ;добавить имя="connectionString в" свойства connectionString="источник данных=(на localdb)\MSSQLLocalDB;ключевое слово attachdbfilename=|параметр datadirectory|\к-PopMusicStore.МДФ;Комплексная безопасность=истина"
="" имя_поставщика="системы.Данных.Sqlclient как"&ГТ;


Что я уже пробовал:

Я попытался добавить Конна.ConnectionString = "Server=[MSSQLLocalDB];Database=[ConnectionString];Trusted_Connection=true", но все еще имеет ту же проблему

Christian Graus

Проблема заключается в строке подключения?

Member 14324865

Объект Sqlconnection Нету

Christian Graus

У вас нет переменной под названием SqlConnection?

Member 14324865

Нет

Christian Graus

В твоих словах нет никакого смысла. Вы читали мой ответ?

phil.o

Что оба =''''- Их там не должно быть.

2 Ответов

Рейтинг:
1

Christian Graus

Я никогда не видел квадратных скобок в соединительных строках. А что, если вы их уберете?


Рейтинг:
1

Richard Deeming

У вас есть три разных строки подключения:

// 1. Load the connection string from the config file, and then throw it away:
string constr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;

// 2. Use the literal string "ConnectionString", which is not a valid connection string, and is causing your exception:
using (SqlConnection conn = new SqlConnection("ConnectionString"))

// 3. Set the connection string to something else which doesn't look valid - but this line will never execute:
conn.ConnectionString = "Server=[MSSQLLocalDB];Database=[ConnectionString];Trusted_Connection=true";

Исключение генерируется #2: строкой "ConnectionString" не является допустимой строкой подключения SQL.

Измените свой код, чтобы вместо него использовать строку подключения, загруженную из конфигурационного файла:
string constr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;

using (SqlConnection conn = new SqlConnection(constr))
using (SqlDataAdapter sda = new SqlDataAdapter("SELECT * FROM Photos", conn))
{
    DataTable dt = new DataTable();
    sda.Fill(dt);
    gvImages.DataSource = dt;
    gvImages.DataBind();
}

Я был бы склонен переместить этот код из Page_Load обработчик событий, так как вам, вероятно, придется вызвать его в другом месте страницы.

Я также был бы склонен сделать его двумя отдельными методами - один для загрузки данных, а другой для привязки его к элементу управления:
private DataTable LoadImages()
{
    string constr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
    
    using (SqlConnection conn = new SqlConnection(constr))
    using (SqlDataAdapter sda = new SqlDataAdapter("SELECT * FROM Photos", conn))
    {
        DataTable dt = new DataTable();
        sda.Fill(dt);
        return dt;
    }
}

private void BindGrid()
{
    DataTable dt = LoadImages();
    gvImages.DataSource = dt;
    gvImages.DataBind();
}

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        BindGrid();
    }
}