如何使用 C# 将带有反斜杠的字符串插入表中
本文关键字:字符串 插入 何使用 | 更新日期: 2023-09-27 18:34:15
我是C#的新手,我仍然在自学它,并且来自Visual FoxPro编程。我遇到的问题是我想在仅包含计算机目录的表单中插入文本框中的值。在该字段中,我选择 C:''当我运行代码时,出现错误:"C:"附近的语法不正确。
包含目录值的字段名称是lblVault
的,并且是标签对象。
我运行的代码如下所示:
using (SqlConnection connect = new SqlConnection(@"Data Source=(LocalDB)'v11.0;" +
"AttachDbFilename=C:''Development''C-Sharp''LockItUp''Lockitup.mdf;Integrated Security=True"))
{
string stmt = "INSERT INTO Users(username,password,folderloc,fullname,email,cellphone) " +
"VALUES (" + @txtUsrName.Text + "," + @txtUserPassword.Text + "," + @lblVault.Text + "," +
@txtFullname.Text + "," + @txtEmail.Text + "," + @txtCellPhone.Text + ")";
using (SqlCommand cmd = new SqlCommand(stmt, connect))
{
try
{
connect.Open();
cmd.ExecuteNonQuery();
connect.Close();
}
catch (Exception ex)
{
MessageBox.Show("Error: " + ex);
return;
}
}
}
感谢您的帮助!
最简单和最安全的方法(谷歌"SQL注入")是使用参数,即使是SQL查询。它不仅可以为您格式化字符串,还可以使您免于最简单的安全问题。
using (SqlConnection connect = new SqlConnection(@"Data Source=(LocalDB)'v11.0;" +
"AttachDbFilename=C:''Development''C-Sharp''LockItUp''Lockitup.mdf;Integrated Security=True"))
{
string stmt = "INSERT INTO Users(username,password,folderloc,fullname,email,cellphone) " +
"VALUES (@username,@password,@folderloc,@fullname,@email,@cellphone)";
using (SqlCommand cmd = new SqlCommand(stmt, connect))
{
cmd.Parameters.Add("@username",txtUsrName.Text);
cmd.Parameters.Add("@password", txtUserPassword.Text);
cmd.Parameters.Add("@folderloc",lblVault.Text);
cmd.Parameters.Add("@fullname", txtFullname.Text);
cmd.Parameters.Add("@email",txtEmail.Text)
cmd.Parameters.Add("@cellphone",txtCellPhone.Text);
try
{
connect.Open();
cmd.ExecuteNonQuery();
connect.Close();
}
catch (Exception ex)
{
MessageBox.Show("Error: " + ex);
return;
}
}
}
与
连接字符串中包含额外斜杠的方式类似,串联字符串中需要额外的斜杠,以便 C# 了解斜杠字符和用于转义为不同字符的斜杠之间的区别。 (例如,' 表示换行符。
@lblVault.Text.Replace(@"'", @"''")
或
@lblVault.Text.Replace("''", "''''")
@ 符号表示不允许任何转义。斜杠的意思是斜杠,而且只有斜杠。