Ошибка cs1009 нераспознанная escape последовательность

I have created a site with the following connection string.

I am getting the following error message any help would be really appreciated.

Compiler Error Message: CS1009: Unrecognized escape sequence
Line 21: ad.DataFile = "D:Hosting9372580htmlpearlPearl.mdb";

my codes:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.OleDb;

public partial class html_Show_Projinfo : System.Web.UI.Page
{
    OleDbCommand cmd;
    OleDbConnection con = new OleDbConnection();
    OleDbDataReader rd;
    protected void Page_Load(object sender, EventArgs e)
    {
        int id = Convert.ToInt32(Request.QueryString["id"]);
        con.ConnectionString = ConfigurationManager.ConnectionStrings["pearl"].ToString();
        cmd = new OleDbCommand("Select * from Pearl_Projects where ProjectId=" + id, con);
        con.Open();
        rd = cmd.ExecuteReader();
        string ns;
        while (rd.Read())
        {
            Label2.Text = rd["ProjectName"].ToString();
            ns = rd["Shortdes"].ToString();
            if (ns.Length > 541)
            {
                Label1.Text = ns.Substring(0, 541);
            }
            else
            {
                Label1.Text = ns.Substring(0, ns.Length);
            }            

            Label3.Text = rd["Description"].ToString();
            Label4.Text = rd["location"].ToString();
        }
        rd.Close();
        con.Close();

        //con.Open();
        //cmd = new OleDbCommand("Select ProjectId from Pearl_ProjectDetails where DetailId=" + id, con);
        //int j = Convert.ToInt32(cmd.ExecuteScalar());
        //con.Close();

        //con.Open();
        //cmd = new OleDbCommand("Select ProjectName from Pearl_Projects where ProjectId=" + j, con);
        //Label1.Text = cmd.ExecuteScalar().ToString();
        //con.Close();
        if (Label4.Text == "")
        {
            Label4.Visible = false;
            Label5.Visible = false;
        }
        else
        {
            Label4.Visible = true;
            Label5.Visible = true;
        }
        AccessDataSource ad = new AccessDataSource();
        ad.DataFile = "D:Hosting9372580htmlpearlPearl.mdb";
        ad.SelectCommand = "SELECT top 3 ProjectId,ProjectName,Status FROM [Pearl_Projects] where Status=no Order by ProjectId Desc";
        DataList1.DataSource = ad;
        DataList1.DataBind();

        AccessDataSource ad1 = new AccessDataSource();
        ad1.DataFile = "D:Hosting9372580htmlpearlPearl.mdb";
        ad1.SelectCommand = "SELECT top 3 ProjectId,ProjectName,Status FROM [Pearl_Projects] where Status=yes Order by ProjectId Desc";
        DataList2.DataSource = ad1;
        DataList2.DataBind();
    }
}

ekad's user avatar

ekad

14.4k26 gold badges44 silver badges46 bronze badges

asked Jul 3, 2013 at 19:36

Efe's user avatar

0

escape those in lines like the following

ad.DataFile = "D:Hosting9372580htmlpearlPearl.mdb";

you can either manually escape them all like so

ad.DataFile = "D:\Hosting\9372580\html\pearl\Pearl.mdb";

or you can make it a literal string

ad.DataFile = @"D:Hosting9372580htmlpearlPearl.mdb";

the character '' begins what is called an «Escape Sequence», and it essentially that you’re using 2 characters to represent 1(special) character.

for instance, n is a newline character, is null, and \ is

answered Jul 3, 2013 at 19:38

Sam I am says Reinstate Monica's user avatar

0

answered Jul 3, 2013 at 19:40

AM_Hawk's user avatar

AM_HawkAM_Hawk

6611 gold badge15 silver badges33 bronze badges

igoorrr

0 / 0 / 0

Регистрация: 30.10.2016

Сообщений: 53

1

02.12.2017, 21:57. Показов 11573. Ответов 3

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Есть microsoft sql server 2012 и вижуал студио 2017 выдает ошибку
До этого была ошибка 40

1009	Нераспознанная escape-последовательность

1009	Нераспознанная escape-последовательность

Ошибка CS1009 Нераспознанная escape-последовательность WindowsFormsApp2 C:UsersИгорьsourcereposWindowsFormsApp2WindowsFormsApp2Form1.cs 23 Активный
код кнопки войти:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
 
namespace WindowsFormsApp2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            SqlConnection cn = new SqlConnection("Data Source=ИГОРЬ-ПКMYDASE;Initial Catalog=login1;Integrated Security=True") ;
            cn.Open();
            SqlCommand cmd = new SqlCommand($"select *from user1 where username = '{textBox1.Text}', and password = '{textBox2.Text}'", cn);
            SqlDataReader dr;
            dr = cmd.ExecuteReader();
            int count = 0;
            while (dr.Read())
            {
                count += 1;
 
            }
            if (count == 1)
            {
                MessageBox.Show("OK");
                Form2 f2 = new Form2();
                f2.Show();
            }
            else if (count > 0)
            {
                MessageBox.Show("Duplicate username and password");
            }
            else
            {
                MessageBox.Show("username or password is not correct");
            }
            textBox1.Clear();
            textBox2.Clear();
 
 
                
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
 
        private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
 
        }
    }
}

две ночи не могу понять)
Надеюсь на вашу помощь(



0



bbq

214 / 210 / 146

Регистрация: 20.11.2014

Сообщений: 1,161

02.12.2017, 23:11

2

Лучший ответ Сообщение было отмечено OwenGlendower как решение

Решение

C#
1
"Data Source=ИГОРЬ-ПК\MYDASE;Initial Catalog=login1;Integrated Security=True"

или

C#
1
@"Data Source=ИГОРЬ-ПКMYDASE;Initial Catalog=login1;Integrated Security=True"



1



0 / 0 / 0

Регистрация: 30.10.2016

Сообщений: 53

03.12.2017, 09:09

 [ТС]

3

1009	Нераспознанная escape-последовательность



0



bbq

214 / 210 / 146

Регистрация: 20.11.2014

Сообщений: 1,161

03.12.2017, 11:01

4

у Вас есть текст ошибки, вот и ищите в чем проблема. Скорее всего надо так

C#
1
SqlCommand cmd = new SqlCommand($"select *from user1 where username = '{textBox1.Text}', and password = '{textBox2.Text}';", cn);



0



I know that there are few questions with answers with the same title, but I couldn’t find my answer there.
I am getting this error when I moved my code from my other computer. On the other computer the application was working fine. I tried to debug the code without success.

Line 45: BeginContext("~/Views/_ViewStart.cshtml", 0, 57, true);
Line 46: 
Line 47: WriteLiteral   ("\\\\\\\\\\\\\\\\\\\\\\\\\\\\");
Line 48: 
Line 49: EndContext("~/Views/_ViewStart.cshtml", 0, 57, true);

Содержание

  • Строка в C#
  • Создание строк в C#
    • Строки с регулярными и буквальными литералами
  • Неизменяемость строк в C#
  • Итого

уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

Большое количество задач (если не большинство) при разработке программного обеспечения так или иначе связано с обработкой строк будь то простой вывод в консоль определенных значений, сравнение строк или парсинг текста web-страниц. Так или иначе, даже при первом знакомстве с языком программирования, первое, что мы делаем — это используем строки («Hello world» и т.д.). Именно поэтому умение работы со строками в C#, как и в любом другом языке программирования, является одним из необходимых и важных навыков программиста. В этой и нескольких последующих статьях мы рассмотрим основные возможности работы со строками в C#.

Строки в C# относятся к неизменяемым типам данных и представляют собой объекты класса System.String. Объекты этого класса представляют текст в виде последовательности символов Unicode. То есть, в отличие от Delphi, где есть и UnicodeString и AnsiString и т.д. и т.п, в C# строка — это всегда набор символов Unicode. Однако, при необходимости, никто не мешает нам изменять кодировку символов в строке C# и об этом мы тоже поговорим.

Также, для тех, кто уже имел дело с другими языками программирования, не лишним будет знать, что в конце строки C# нет нуль-символов. Поэтому строка в C# мы можем создавать строки, которые содержат любое количество внедренных нуль-символов (). При этом, максимальный размер объекта String в памяти составляет 2 Гб.

Создание строк в C#

Объявление и создание строк в C# можно осуществить несколькими способами. Рассмотрим основные из них.

string str1; //объявили переменную типа string
str1 = "Привет";//присвоили строке значение
//объявили и создали строку из двух символов 'a'
string str2 = new String('a', 2);
//объявили и создали строку из массива символов
char[] letters = { 'H', 'e', 'l', 'l', 'o' };
string helloString = new string(letters);
//объявили и создали пустую строку
string emptyStr = string.Empty;

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

string nullStr = null;

хотя, разработчики C# и предупреждают нас о том, что использование string.Empty вместо null предпочтительнее и  снижает вероятность получения исключения типа NullReferenceException.

Строки с регулярными и буквальными литералами

Отдельное внимание при создании строк также стоит уделить такому моменту, как создание строк, содержащих какие-либо служебные символы. Например, если вам необходимо присвоить строке значение, указывающее на путь к файлу: c:Program Filesdotnetdotnet.exe. Если вы попробуете присвоить строке это значение как есть, то ваша программа даже не будет скомпилирована, так как Visual Studio укажет вам на ошибку:

Ошибка CS1009 Нераспознанная escape-последовательность

Все дело в том, что символ обратной косой черты используется в строках для указания так называемых escape-последовательностей и для того, чтобы создать строку, содержащую символ  нам необходимо либо регулярный строковый литерал, либо буквальный литерал, как показано ниже:

//использование регулярного литерала
string path = "c:\Program Files\dotnet\dotnet.exe";
//использование буквального литерала
string path2 = @"c:Program Filesdotnetdotnet.exe";

Использование регулярного литерала позволяет нам использовать различные escape-последовательности в строках. В таблице ниже представлены основные escape-последовательности в C#:

Escape-последовательность Имя символа Кодировка Юникод
Одинарная кавычка 0x0027
» Двойная кавычка 0x0022
\ Обратная косая черта 0x005C
Null 0x0000
a Предупреждение 0x0007
b Backspace 0x0008
f Перевод страницы 0x000C
n Новая строка 0x000A
r Возврат каретки 0x000D
t Горизонтальная табуляция 0x0009
v Вертикальная табуляция 0x000B
u Escape-последовательность Юникода (UTF-16) uHHHH (диапазон: 0000–FFFF; пример: u00E7 = «ç»)
U Escape-последовательность Юникода (UTF-32) U00HHHHHH (диапазон: 000000–10FFFF; пример: U0001F47D = «👽»)
x Escape-последовательность Юникода аналогична «u», она отличается только длиной переменной xH[H][H][H] (диапазон: 0–FFFF; пример: x00E7 или x0E7 или xE7 = «ç»)

Например, используя escape-последовательности, мы можем вывести в консоль таблицу:

//выводим в консоль таблицу 3х3
Console.WriteLine("НомерtЗначениеtОписание");
Console.WriteLine("1t0,1ttописание 1");
Console.WriteLine("2t0,2ttописание 2");
Console.WriteLine("3t0,3ttописание 3");

В итоге, в консоли мы увидим вот такую красивую табличку:

Что касается использования буквального литерала в строках, то его удобно использовать для того, чтобы сделать строки, содержащие какие-либо служебные символы, более читабельными. Согласитесь, что такая строка:

string path2 = @"c:Program Filesdotnetdotnet.exe";

выглядит более читабельной, чем вот такая:

string path = "c:\Program Files\dotnet\dotnet.exe";

Более того, так как буквальный литерал позволяет сохранять все символы в строке как есть, то, используя его, мы можем использовать в наших строках переносы, кавычки и прочие символы как есть, например:

//использование буквального литерала
            string str = @"Эта строка содержит символ  , а также одинарные кавычки 'текст в кавычках' 
                           и переносы строки
                           ";

В результате, в консоли мы увидим следующий текст:

Неизменяемость строк в C#

Как уже упоминалось выше, строки в C# относятся к неизменяемым типам данных. Что это значит для нас? А это значит, что при каждом присвоении значения переменной типа string система вначале освобождает память, занятую строкой, а затем выделяет по новой и только потом записывает новое значение. С одной стороны, подобный подход выглядит нерациональным — лишние освобождения и выделения памяти, но, с другой стороны, таким образом разработчики C# обеспечили максимальную безопасность работы со строками и, надо сказать, сделали это достаточно элегантно и понятно. Например,

string str4; //объявили переменную
str4 = "hello"; //выделили память под 5 символов и присвоили значение переменной
str4 = "hello world";//освободили память, по новой выделили память уже под 11 символов и присвоили новое значение

Также стоит отметить, что когда содержимое двух строк, например, s1 и s2 объединяется для формирования строки, то две исходные строки не изменяются. Например:

string s1 = "Hello ";
string s2 = "world";

s1 += s2;
Console.WriteLine(s1);

В примере выше оператор += создает новую строку, которая содержит объединенное содержимое двух строк. Этот новый объект присваивается переменной s1, а исходный объект, который был присвоен s1, освобождается для сборки мусора, так как ни одна переменная не ссылается на него.

Если вы создадите ссылку на строку, а затем «измените» исходную строку, ссылка будет по-прежнему указывать на исходный объект, а не на новый объект, который был создан при изменении строки. Пример:

string s1 = "Hello ";
string s2 = s1;
s1 += "World";
Console.WriteLine(s2);

В представленном примере может показаться, что в итоге, в консоли будет строка "Hello world", однако, на самом деле в консоли мы увидим только "Hello "так как строка s2 остается неизменной.

Итого

Сегодня мы узнали как создавать строки в C#, как использовать различные escape-последовательности в строках, а также использовать буквальный литерал для повышения читабельности строк в C#. Также рассмотрели некоторые моменты, касающиеся неизменности строк в C# и как эта неизменность проявляется.

уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

Содержание

  • Строка в C#
  • Создание строк в C#
    • Строки с регулярными и буквальными литералами
  • Неизменяемость строк в C#
  • Итого

уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

Большое количество задач (если не большинство) при разработке программного обеспечения так или иначе связано с обработкой строк будь то простой вывод в консоль определенных значений, сравнение строк или парсинг текста web-страниц. Так или иначе, даже при первом знакомстве с языком программирования, первое, что мы делаем — это используем строки («Hello world» и т.д.). Именно поэтому умение работы со строками в C#, как и в любом другом языке программирования, является одним из необходимых и важных навыков программиста. В этой и нескольких последующих статьях мы рассмотрим основные возможности работы со строками в C#.

Строки в C# относятся к неизменяемым типам данных и представляют собой объекты класса System.String. Объекты этого класса представляют текст в виде последовательности символов Unicode. То есть, в отличие от Delphi, где есть и UnicodeString и AnsiString и т.д. и т.п, в C# строка — это всегда набор символов Unicode. Однако, при необходимости, никто не мешает нам изменять кодировку символов в строке C# и об этом мы тоже поговорим.

Также, для тех, кто уже имел дело с другими языками программирования, не лишним будет знать, что в конце строки C# нет нуль-символов. Поэтому строка в C# мы можем создавать строки, которые содержат любое количество внедренных нуль-символов (). При этом, максимальный размер объекта String в памяти составляет 2 Гб.

Создание строк в C#

Объявление и создание строк в C# можно осуществить несколькими способами. Рассмотрим основные из них.

string str1; //объявили переменную типа string
str1 = "Привет";//присвоили строке значение
//объявили и создали строку из двух символов 'a'
string str2 = new String('a', 2);
//объявили и создали строку из массива символов
char[] letters = { 'H', 'e', 'l', 'l', 'o' };
string helloString = new string(letters);
//объявили и создали пустую строку
string emptyStr = string.Empty;

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

string nullStr = null;

хотя, разработчики C# и предупреждают нас о том, что использование string.Empty вместо null предпочтительнее и  снижает вероятность получения исключения типа NullReferenceException.

Строки с регулярными и буквальными литералами

Отдельное внимание при создании строк также стоит уделить такому моменту, как создание строк, содержащих какие-либо служебные символы. Например, если вам необходимо присвоить строке значение, указывающее на путь к файлу: c:Program Filesdotnetdotnet.exe. Если вы попробуете присвоить строке это значение как есть, то ваша программа даже не будет скомпилирована, так как Visual Studio укажет вам на ошибку:

Ошибка CS1009 Нераспознанная escape-последовательность

Все дело в том, что символ обратной косой черты используется в строках для указания так называемых escape-последовательностей и для того, чтобы создать строку, содержащую символ  нам необходимо либо регулярный строковый литерал, либо буквальный литерал, как показано ниже:

//использование регулярного литерала
string path = "c:Program Filesdotnetdotnet.exe";
//использование буквального литерала
string path2 = @"c:Program Filesdotnetdotnet.exe";

Использование регулярного литерала позволяет нам использовать различные escape-последовательности в строках. В таблице ниже представлены основные escape-последовательности в C#:

Escape-последовательность Имя символа Кодировка Юникод
Одинарная кавычка 0x0027
» Двойная кавычка 0x0022
Обратная косая черта 0x005C
Null 0x0000
a Предупреждение 0x0007
b Backspace 0x0008
f Перевод страницы 0x000C
n Новая строка 0x000A
r Возврат каретки 0x000D
t Горизонтальная табуляция 0x0009
v Вертикальная табуляция 0x000B
u Escape-последовательность Юникода (UTF-16) uHHHH (диапазон: 0000–FFFF; пример: u00E7 = «ç»)
U Escape-последовательность Юникода (UTF-32) U00HHHHHH (диапазон: 000000–10FFFF; пример: U0001F47D = «👽»)
x Escape-последовательность Юникода аналогична «u», она отличается только длиной переменной xH[H][H][H] (диапазон: 0–FFFF; пример: x00E7 или x0E7 или xE7 = «ç»)

Например, используя escape-последовательности, мы можем вывести в консоль таблицу:

//выводим в консоль таблицу 3х3
Console.WriteLine("НомерtЗначениеtОписание");
Console.WriteLine("1t0,1ttописание 1");
Console.WriteLine("2t0,2ttописание 2");
Console.WriteLine("3t0,3ttописание 3");

В итоге, в консоли мы увидим вот такую красивую табличку:

Что касается использования буквального литерала в строках, то его удобно использовать для того, чтобы сделать строки, содержащие какие-либо служебные символы, более читабельными. Согласитесь, что такая строка:

string path2 = @"c:Program Filesdotnetdotnet.exe";

выглядит более читабельной, чем вот такая:

string path = "c:Program Filesdotnetdotnet.exe";

Более того, так как буквальный литерал позволяет сохранять все символы в строке как есть, то, используя его, мы можем использовать в наших строках переносы, кавычки и прочие символы как есть, например:

//использование буквального литерала
            string str = @"Эта строка содержит символ  , а также одинарные кавычки 'текст в кавычках' 
                           и переносы строки
                           ";

В результате, в консоли мы увидим следующий текст:

Неизменяемость строк в C#

Как уже упоминалось выше, строки в C# относятся к неизменяемым типам данных. Что это значит для нас? А это значит, что при каждом присвоении значения переменной типа string система вначале освобождает память, занятую строкой, а затем выделяет по новой и только потом записывает новое значение. С одной стороны, подобный подход выглядит нерациональным — лишние освобождения и выделения памяти, но, с другой стороны, таким образом разработчики C# обеспечили максимальную безопасность работы со строками и, надо сказать, сделали это достаточно элегантно и понятно. Например,

string str4; //объявили переменную
str4 = "hello"; //выделили память под 5 символов и присвоили значение переменной
str4 = "hello world";//освободили память, по новой выделили память уже под 11 символов и присвоили новое значение

Также стоит отметить, что когда содержимое двух строк, например, s1 и s2 объединяется для формирования строки, то две исходные строки не изменяются. Например:

string s1 = "Hello ";
string s2 = "world";

s1 += s2;
Console.WriteLine(s1);

В примере выше оператор += создает новую строку, которая содержит объединенное содержимое двух строк. Этот новый объект присваивается переменной s1, а исходный объект, который был присвоен s1, освобождается для сборки мусора, так как ни одна переменная не ссылается на него.

Если вы создадите ссылку на строку, а затем «измените» исходную строку, ссылка будет по-прежнему указывать на исходный объект, а не на новый объект, который был создан при изменении строки. Пример:

string s1 = "Hello ";
string s2 = s1;
s1 += "World";
Console.WriteLine(s2);

В представленном примере может показаться, что в итоге, в консоли будет строка "Hello world", однако, на самом деле в консоли мы увидим только "Hello "так как строка s2 остается неизменной.

Итого

Сегодня мы узнали как создавать строки в C#, как использовать различные escape-последовательности в строках, а также использовать буквальный литерал для повышения читабельности строк в C#. Также рассмотрели некоторые моменты, касающиеся неизменности строк в C# и как эта неизменность проявляется.

уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

Понравилась статья? Поделить с друзьями:
  • Ошибка cs0200 невозможно присвоить значение свойству или индексатору
  • Ошибка cs0165 использование локальной переменной которой не присвоено значение
  • Ошибка cs0161 не все пути к коду возвращают значение
  • Ошибка cs0120 для нестатического поля метода или свойства
  • Ошибка cs0106 модификатор public недопустим для этого элемента