C# 错误:CS1009:无法识别的转义序列
我不熟悉编码,我曾尝试使用SQL Server数据库创建登录表单,但由于某些原因,它没有注册 我直接从我的SQL Server名称获取数据源。谁能告诉我我做错了什么 我的代码: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.
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”
。