Ошибки синтаксиса строки соединения с базой данных C # SQL Server - PullRequest
0 голосов
/ 25 апреля 2018

Я очень новичок в C #, поэтому я использую учебники, чтобы пройти.

Я следую руководству YouTube по созданию формы для входа. Связанный здесь , в 10:00 минут в видео он начинает вводить строку подключения, которая была извлечена из базы данных ранее.

Я выполнил те же самые шаги, введя следующее:

SqlConnection connnection = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename="C: \Users\Kevin\source\repos\Kops' Toolbox\Kops' Toolbox\Database1.mdf";Integrated Security=True");

Однако я был удивлен, увидев 26 ошибок, связанных с этой строкой. Я подозревал, что это как-то связано со строкой, когда я читаю здесь , что

Вы также должны экранировать обратную обратную косую черту в строке подключения \ становится этой \\

Однако, используя символ @ перед строкой, он превращается в verbatim string, когда я читаю здесь , так что это не проблема.

Теперь я предполагаю, что проблема связана с моим app.config, как и в других сообщениях, которые я видел, они добавили туда свою строку подключения, а затем создали новую строку подключения, ссылающуюся на это, но в указанном учебнике он не не делай этого, и это меня смущает.

App.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
    </startup>
</configuration>

кнопка входа

private void buttonLogin_Click(object sender, EventArgs e)
{
    SqlConnection connnection = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename="C: \Users\Kevin\source\repos\Kops' Toolbox\Kops' Toolbox\Database1.mdf";Integrated Security=True");

    SqlDataAdapter sda = new SqlDataAdapter("select count(*) from login where Username ='" + textBoxUsername.Text + "' and Password='" + textBoxPassword.Text + "'", connnection);

    DataTable dt = new DataTable();
    sda.Fill(dt);

    if (dt.Rows[0][0].ToString() == "1")
    {
        LoginSuccess();
    }
    else
    {
        MessageBox.Show("Failed login.");
    }
}

Сообщения об ошибках

Ошибка CS1003 Синтаксическая ошибка, ',' ожидаемый Kops 'Toolbox C: \ Users \ Kevin \ source \ repos \ Kops' Toolbox \ Kops 'Toolbox \ Form1.cs 62 Активный
Ошибка CS1009 Нераспознанная escape-последовательность Kops 'Toolbox C: \ Users \ Kevin \ source \ repos \ Kops' Toolbox \ Kops 'Toolbox \ Form1.cs 62 Активно
Ошибка CS1056 Неожиданный символ '\' Kops 'Toolbox C: \ Users \ Kevin \ source \ repos \ Kops' Toolbox \ Kops 'Toolbox \ Form1.cs 62 Активно
Ошибка CS1003 Синтаксическая ошибка, ',' ожидаемый Kops 'Toolbox C: \ Users \ Kevin \ source \ repos \ Kops' Toolbox \ Kops 'Toolbox \ Form1.cs 62 Активно
Ошибка CS1056 Неожиданный символ '\' Kops 'Toolbox C: \ Users \ Kevin \ source \ repos \ Kops' Toolbox \ Kops 'Toolbox \ Form1.cs 62 Активно
Ошибка CS1003 Синтаксическая ошибка, ',' ожидаемый Kops 'Toolbox C: \ Users \ Kevin \ source \ repos \ Kops' Toolbox \ Kops 'Toolbox \ Form1.cs 62 Активно
Ошибка CS1056 Неожиданный символ '\' Kops 'Toolbox C: \ Users \ Kevin \ source \ repos \ Kops' Toolbox \ Kops 'Toolbox \ Form1.cs 62 Активно
Ошибка CS1003 Синтаксическая ошибка, ',' ожидаемый Kops 'Toolbox C: \ Users \ Kevin \ source \ repos \ Kops' Toolbox \ Kops 'Toolbox \ Form1.cs 62 Активно
Ошибка CS1056 Неожиданный символ '\' Kops 'Toolbox C: \ Users \ Kevin \ source \ repos \ Kops' Toolbox \ Kops 'Toolbox \ Form1.cs 62 Активно
Ошибка CS1003 Синтаксическая ошибка, ',' ожидаемый Kops 'Toolbox C: \ Users \ Kevin \ source \ repos \ Kops' Toolbox \ Kops 'Toolbox \ Form1.cs 62 Активно
Ошибка CS1003 Синтаксическая ошибка, ',' ожидаемый Kops 'Toolbox C: \ Users \ Kevin \ source \ repos \ Kops' Toolbox \ Kops 'Toolbox \ Form1.cs 62 Активно
Ошибка CS1012 Слишком много символов в символьном литерале Kops 'Toolbox C: \ Users \ Kevin \ source \ repos \ Kops' Toolbox \ Kops 'Toolbox \ Form1.cs 62 Активно
Ошибка CS1009 Нераспознанная escape-последовательность Kops 'Toolbox C: \ Users \ Kevin \ source \ repos \ Kops' Toolbox \ Kops 'Toolbox \ Form1.cs 62 Активно
Ошибка CS1003 Синтаксическая ошибка, ',' ожидаемый Kops 'Toolbox C: \ Users \ Kevin \ source \ repos \ Kops' Toolbox \ Kops 'Toolbox \ Form1.cs 62 Активно
Ошибка CS1056 Неожиданный символ '\' Kops 'Toolbox C: \ Users \ Kevin \ source \ repos \ Kops' Toolbox \ Kops 'Toolbox \ Form1.cs 62 Активно
Ошибка CS1003 Синтаксическая ошибка, ',' ожидаемый Kops 'Toolbox C: \ Users \ Kevin \ source \ repos \ Kops' Toolbox \ Kops 'Toolbox \ Form1.cs 62 Активно
Ошибка CS1003 Синтаксическая ошибка, ',' ожидаемый Kops 'Toolbox C: \ Users \ Kevin \ source \ repos \ Kops' Toolbox \ Kops 'Toolbox \ Form1.cs 62 Активно
Ошибка CS1739 Наилучшая перегрузка для 'SqlConnection' не имеет параметра с именем 'C' Kops 'Toolbox C: \ Users \ Kevin \ source \ repos \ Kops' Toolbox \ Kops 'Toolbox \ Form1.cs 62 Active
Ошибка CS0103 Имя «Пользователи» не существует в текущем контексте Kops 'Toolbox C: \ Users \ Kevin \ source \ repos \ Kops' Toolbox \ Kops 'Toolbox \ Form1.cs 62 Active
Ошибка CS0103 Имя «Кевин» не существует в текущем контексте. Kops 'Toolbox C: \ Users \ Kevin \ source \ repos \ Kops' Toolbox \ Kops 'Toolbox \ Form1.cs 62 Active
Ошибка CS1738 Спецификации именованных аргументов должны появляться после указания всех фиксированных аргументов. Пожалуйста, используйте языковую версию 7.2 или выше, чтобы разрешить непоследовательные именованные аргументы. Kops 'Toolbox C: \ Users \ Kevin \ source \ repos \ Kops' Toolbox \ Kops 'Toolbox \ Form1.cs 62 Активно
Ошибка CS0103 Имя «источник» не существует в текущем контексте Kops 'Toolbox C: \ Users \ Kevin \ source \ repos \ Kops' Toolbox \ Kops 'Toolbox \ Form1.cs 62 Active
Ошибка CS0103 Имя «repos» не существует в текущем контексте Kops 'Toolbox C: \ Users \ Kevin \ source \ repos \ Kops' Toolbox \ Kops 'Toolbox \ Form1.cs 62 Active
Ошибка CS0103 Имя «Kops» не существует в текущем контексте. Kops 'Toolbox C: \ Users \ Kevin \ source \ repos \ Kops' Toolbox \ Kops 'Toolbox \ Form1.cs 62 Active
Ошибка CS0103 Имя «Toolbox» не существует в текущем контексте Kops 'Toolbox C: \ Users \ Kevin \ source \ repos \ Kops' Toolbox \ Kops 'Toolbox \ Form1.cs 62 Active
Ошибка CS0103 Имя «База данных1» не существует в текущем контексте Kops 'Toolbox C: \ Users \ Kevin \ source \ repos \ Kops' Toolbox \ Kops 'Toolbox \ Form1.cs 62 Active

База данных с именем Database1 Таблица называется UserData

enter image description here

1 Ответ

0 голосов
/ 25 апреля 2018

Ты почти у цели. Основная проблема в том, что ваша строка содержит двойные кавычки; но сама строка отделяется двойными кавычками, поэтому вам нужно «экранировать» этот символ (несмотря на то, что в принятом ответе связан вопрос о дословных строках, это не упоминается - я добавлю комментарий, но другой ответ упоминает его) .

Вы должны увидеть, что это не правильно, по цвету источника в вашем редакторе. Если вы не можете, тогда найдите лучший редактор.

Способ избежать этого варьируется между обычными строками и дословными строками. С дословными строками просто удвойте двойную кавычку так:

SqlConnection connnection = new SqlConnection(
    @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=""C:\Users\Kevin\source\repos\Kops' Toolbox\Kops' Toolbox\Database1.mdf"";Integrated Security=True");

(Я удалил пробел после C:)

Дополнительные советы:

  • SqlConnection и SqlDataAdapter (и SqlCommand, для использования в будущем) являются IDisposable, поэтому должны быть в using блоках.
  • Этот код уязвим для атаки инъекцией Sql - пожалуйста, прочитайте об этом, как только у вас это заработает.
  • Вам нужно только первое значение из первой строки, поэтому попробуйте создать SqlCommand и использовать ExecuteScalar.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...