SQL连接字符串C#ASP NET
因此,我正在制作一个提交内容页面,将用户输入的内容存储到数据库中,以下是我迄今为止的代码:SQL连接字符串C#ASP NET,c#,sql,asp.net,sql-server,connection-string,C#,Sql,Asp.net,Sql Server,Connection String,因此,我正在制作一个提交内容页面,将用户输入的内容存储到数据库中,以下是我迄今为止的代码: protected void submitData_Click(object sender, EventArgs e) { string userId = HttpContext.Current.User.Identity.Name; int categoryId = Convert.ToInt32(categories.SelectedValue);
protected void submitData_Click(object sender, EventArgs e)
{
string userId = HttpContext.Current.User.Identity.Name;
int categoryId = Convert.ToInt32(categories.SelectedValue);
if (categoryId > 0 && content.Text != "" && description.Text != "")
{
using (SqlConnection connection = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename="C: \Users\Will\Documents\Visual Studio 2015\WebSites\inshort\App_Data\ASPNETDB.MDF";Integrated Security=True"))
{
SqlCommand cmd = new SqlCommand("INSERT INTO aspnet_newscontent (author, username, date, category, content, description) VALUES (@author, @username, @date, @category, @content, @description)");
cmd.CommandType = System.Data.CommandType.Text;
cmd.Connection = connection;
cmd.Parameters.AddWithValue("@author", nameInput.Text);
cmd.Parameters.AddWithValue("@username", userId);
cmd.Parameters.AddWithValue("@date", DateTime.Today);
cmd.Parameters.AddWithValue("@category", categoryId);
cmd.Parameters.AddWithValue("@content", content.Text);
cmd.Parameters.AddWithValue("@description", description.Text);
connection.Open();
cmd.ExecuteNonQuery();
}
}
else
{
errorLabel.Text = "Please fill in the required fields.";
}
}
但是,我收到一个错误,说连接字符串包含无效字符“\”,这是有道理的,但每当我转到数据库的属性并查看连接字符串属性时,它就会这样说。我正在使用MicrosoftSQLServerExpress在本地托管数据库,如果这样做会改变什么。有人知道如何格式化这些连接字符串吗?您必须对C#字符串中的某些字符进行转义。如果去掉“文字”字符串(@),它将如下所示:
using (SqlConnection connection = new SqlConnection("Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=\"C:\\Users\\Will\\Documents\\Visual Studio 2015\\WebSites\\inshort\\App_Data\\ASPNETDB.MDF\";Integrated Security=True"))
必须对C#字符串中的某些字符进行转义。如果去掉“文字”字符串(@),它将如下所示:
using (SqlConnection connection = new SqlConnection("Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=\"C:\\Users\\Will\\Documents\\Visual Studio 2015\\WebSites\\inshort\\App_Data\\ASPNETDB.MDF\";Integrated Security=True"))
查看语法突出显示。您试图将未转义的双引号放在字符串中,这显然会使解析器感到困惑,因为它认为您的字符串会提前终止,并且在结束后会充满语法错误 要在逐字字符串文字中转义引号(前面有一个
@
),您需要“双引号”-双引号。像这样:
@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=""C:\Users\Will\Documents\Visual Studio 2015\WebSites\inshort\App_Data\ASPNETDB.MDF"";Integrated Security=True"
查看语法突出显示。您试图将未转义的双引号放在字符串中,这显然会使解析器感到困惑,因为它认为您的字符串会提前终止,并且在结束后会充满语法错误 要在逐字字符串文字中转义引号(前面有一个
@
),您需要“双引号”-双引号。像这样:
@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=""C:\Users\Will\Documents\Visual Studio 2015\WebSites\inshort\App_Data\ASPNETDB.MDF"";Integrated Security=True"
正如其他人指出的,您需要转义连接字符串中的特殊字符 实际上,使用asp.net,许多开发人员只需将连接字符串放在他们的
web.config
中,然后以这种方式访问它,如果它发生更改,您只需在一个位置进行更改:
<connectionStrings>
<add name="MyConnection" connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C: \Users\Will\Documents\Visual Studio 2015\WebSites\inshort\App_Data\ASPNETDB.MDF;Integrated Security=True/>
</connectionStrings>
正如其他人指出的,您需要转义连接字符串中的特殊字符 实际上,使用asp.net,许多开发人员只需将连接字符串放在他们的
web.config
中,然后以这种方式访问它,如果它发生更改,您只需在一个位置进行更改:
<connectionStrings>
<add name="MyConnection" connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C: \Users\Will\Documents\Visual Studio 2015\WebSites\inshort\App_Data\ASPNETDB.MDF;Integrated Security=True/>
</connectionStrings>
转义字符串中的双引号,对于逐字字符串,请使用双引号,如“数据源=(LocalDB)\MSSQLLocalDB;AttachDbFilename=”“C:\Users\Will\Documents\visualstudio 2015\WebSites\inshort\App\u Data\ASPNETDB.MDF”“;integratedsecurity=True”——投票以键入错误结束。这篇文章可能会帮助有类似问题的人学习如何正确使用转义字符。还有很多文章,因此,这个问题可以被视为字符串中双引号转义的重复,对于逐字字符串,使用双引号,如“数据源=(LocalDB)\MSSQLLocalDB;AttachDbFilename=”“C:\Users\Will\Documents\visualstudio 2015\WebSites\inshort\App\u Data\ASPNETDB.MDF”“;integratedsecurity=True”——投票以键入错误结束。这篇文章可能会帮助有类似问题的人学习如何正确使用转义字符。还有很多文章,因此,这个问题也可以被视为这一技巧的重复,我会尽快接受这个答案;初始目录=SQLDatabaseName@Chuck:这对LocalDB有用吗?仅仅为了使连接字符串看起来更干净而更改整个SQL基础结构似乎不是一个很好的使用方法。这就成功了,我会尽快接受这个答案。您确实应该使用以下格式:Data Source=DataBaseServerName;初始目录=SQLDatabaseName@Chuck:这对LocalDB有用吗?仅仅为了使连接字符串看起来更干净而更改整个SQL基础结构似乎不是一个很好的方法。您的配置中缺少了双引号。您的配置中缺少了双引号。