C# 错误:CS1009:无法识别的转义序列

C# 错误:CS1009:无法识别的转义序列,c#,html,sql-server,C#,Html,Sql Server,我不熟悉编码,我曾尝试使用SQL Server数据库创建登录表单,但由于某些原因,它没有注册 我直接从我的SQL Server名称获取数据源。谁能告诉我我做错了什么 我的代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Reflection.Emit; using System.Web; using System.Web.

我不熟悉编码,我曾尝试使用SQL Server数据库创建登录表单,但由于某些原因,它没有注册

我直接从我的SQL Server名称获取数据源。谁能告诉我我做错了什么

我的代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Reflection.Emit;
using System.Web;
using System.Web.Mvc;
using System.Web.UI.WebControls;
using Opgave.Models;
using System.Data.SqlClient;

namespace Opgave.Controllers
{
    public class UserController : Controller
    {
        SqlConnection con = new SqlConnection();
        SqlCommand com = new SqlCommand();
        SqlDataReader dr;

        // GET: User
        [HttpGet]
        public ActionResult Login()
        {
            return View();
        }
        
        void connectionString()
        {
            con.ConnectionString = "data source=LAPTOP-UMVUL6BV\SQLEXPRESS; database=SkoleNavn; integrated security=SSPI;";
        }

        [HttpPost]
        public ActionResult Verify(UserLogin2 Acc)
        {
            connectionString();
            con.Open();
            com.Connection = con;
            com.CommandText = "select * from UserLogin where Email='"+Acc.email+"' and Password='"+Acc.password+"'";

            dr = com.ExecuteReader();

            if (dr.Read())
            {
                con.Close();
                return View("Index");
            }
            else
            {
                con.Close();
                return View("Index");
            }
        }
    }
}

如注释中所述,C#允许您将字符组合写入字符串,并且在编译器处理代码时,它们将被解释为其他字符:

string containsNewline = "abc\ndef";
string containsTab     = "abc\tdef";
在实际编译的程序中,这两个字符串的长度都将达到7个字符;一个包含换行符,另一个包含选项卡。
\n
\t
被称为转义序列-斜杠开始,下一个字符指示结果

你放了一串:

con.ConnectionString = "data source=LAPTOP-UMVUL6BV\SQLE
                                                   ^^
编译器错误告诉您“我不知道任何由转义序列
反斜杠-S
表示的字符”

因为它根本不是您想要使用的转义序列,而是一个文本斜杠后跟一个文本s,所以您必须在字符串
分隔符之前加一个@来关闭转义:

con.ConnectionString = @"data source=LAPTOP-UMVUL6BV\SQLE
或者您保持转义机制处于活动状态,但使用
\\
,这意味着“第一个斜杠开始转义解释,下一个字符(也是斜杠)意味着”将一个文本
\
字符放入字符串中。因此,在转义处理后,两个
\
变为一个
\

con.ConnectionString = "data source=LAPTOP-UMVUL6BV\\SQLE

请使用参数化查询-通过连接等方式构建SQL查询会导致灾难。它不仅是许多难以调试的语法错误的来源,而且是一个广泛的开放门户。此外:永远不要将密码存储为纯文本!对其进行哈希处理!。要回答您的问题,请尝试将“\”替换为“\\“在您的连接字符串中。可能错误消息是抱怨
数据源=LAPTOP-UMVUL6BV\SQLEXPRESS
中的
\S
字符。请尝试使用以
@
字符开头的逐字字符串文字,例如
@“Single\backslash\Are\Ok\Here”
,或使用另一个字符转义反斜杠,例如
“This\\Needs\\double\\backslash”