首页 > 解决方案 > 错误:CS1009:无法识别的转义序列

问题描述

我是编码新手,我尝试使用 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#htmlsql-server

解决方案


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

string containsNewline = "abc\ndef";
string containsTab     = "abc\tdef";

在实际编译的程序中,这两个字符串都会以 7 个字符结尾;一个包含换行符,另一个包含选项卡。\nand被\t称为转义序列 - 斜线开始它,下一个字符指示结果将是什么。

你放了一串:

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

编译器错误告诉您“我不知道转义序列表示的任何字符backslash-S

"因为它根本不是您要使用的转义序列,而是文字斜线后跟文字 S,所以您必须通过在字符串分隔符之前放置 @ 来关闭转义:

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

或者您让转义机制处于活动状态,但使用\\这意味着“第一个斜杠开始转义解释,下一个字符(也是一个斜杠)意味着“将文字\字符放入字符串中。因此在处理转义后两者\\合二为一\

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

推荐阅读