所以我正在制作一个提交内容页面,将用户输入存储到数据库中,这是我到目前为止的代码:
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.";
}
}
但是,我收到一个错误,说连接字符串包含无效字符“\”,这是有道理的,但每当我转到我的数据库的属性并查看连接字符串属性时,就是它所说的。 /> 我正在使用Microsoft Sql Server Express在本地托管数据库,如果它发生任何变化。有人知道如何格式化这些连接字符串吗?
答案 0 :(得分:2)
您必须转义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"))
答案 1 :(得分:2)
查看语法高亮显示。你试图将未转义的双引号放在一个字符串中,这显然会使解析器混淆,因为它认为你的字符串先前已经终止,并且在它之后只是语法错误。
要在逐字字符串文字中转义引号(一个前缀为@
),您需要" double" -double引用它们。像这样:
@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=""C:\Users\Will\Documents\Visual Studio 2015\WebSites\inshort\App_Data\ASPNETDB.MDF"";Integrated Security=True"
答案 2 :(得分:1)
正如其他人指出的那样,您需要转义连接字符串中的特殊字符。
在实践中,使用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>
然后使用以下方式访问它:
private string GetConnectionString()
{
return System.Configuration.ConfigurationManager.ConnectionStrings["MyConnection"].ConnectionString;
}