c#提交到数据库时从字符串中剥离字符
c# stripping characters from string when submitting to database
我目前正在开展一个项目,我需要将文件路径提交到数据库,并且还能够从数据库中提取该路径。
目前我可以将路径提交到数据库并从数据库中提取数据,但是当我提交到数据库时,路径中的斜杠似乎从字符串中删除了。
如何在提交到数据库和从数据库中提取时阻止 \ 被删除?
这是我的保存按钮事件代码:
private void btnSaveSettings_Click(object sender, EventArgs e)
{
string myConnection = "datasource=localhost;port=3306;username=username;password=password";
string Query = "insert into ephex_contcollections.Paths (toindex,indexed) values('" + this.txtToIndexPath.Text + "','" + this.txtIndexedPath.Text + "') ;";
MySqlConnection myConn = new MySqlConnection(myConnection);
MySqlCommand cmdDB = new MySqlCommand(Query, myConn);
MySqlDataReader myReader;
try
{
myConn.Open();
myReader = cmdDB.ExecuteReader();
MessageBox.Show("Save Successful");
while (myReader.Read())
{
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
} //close save button event
我提交给数据库的字符串在文本框中看起来像这样:
C:\Users\Meta\Desktop\Alpha
但是他们是这样提交到数据库的:
C:UsersMetaDesktopAlpha
在此先感谢(我是使用 C# 使用 MySQL 数据库的新手,我的 C# 也很生疏)。
你应该使用 SQL Parameters,但如果你想快速解决这个问题,请在路径中添加双斜杠,这样输出将是:C:\Users\Meta\Desktop\Alpha
string Query = "insert into ephex_contcollections.Paths (toindex,indexed) values('" + this.txtToIndexPath.Text.Replace(@"\" , @"\") + "','" + this.txtIndexedPath.Text.Replace(@"\" , @"\") + "') ;";
您遇到的问题是,即使在字符串中使用斜线,也有一定意义。
您需要像这样在字符串中使用特殊字符作为反斜杠
"hello \ world" = "hello \ world"
还有,你可以在字符串前面加上@符号,不使用转义符,但我不推荐,像这样的字符串 s = @ "hello \ world" = " hello \ world".
希望对您有所帮助。
编辑:Whosebug 一直在编辑我的反斜杠
我目前正在开展一个项目,我需要将文件路径提交到数据库,并且还能够从数据库中提取该路径。
目前我可以将路径提交到数据库并从数据库中提取数据,但是当我提交到数据库时,路径中的斜杠似乎从字符串中删除了。
如何在提交到数据库和从数据库中提取时阻止 \ 被删除?
这是我的保存按钮事件代码:
private void btnSaveSettings_Click(object sender, EventArgs e)
{
string myConnection = "datasource=localhost;port=3306;username=username;password=password";
string Query = "insert into ephex_contcollections.Paths (toindex,indexed) values('" + this.txtToIndexPath.Text + "','" + this.txtIndexedPath.Text + "') ;";
MySqlConnection myConn = new MySqlConnection(myConnection);
MySqlCommand cmdDB = new MySqlCommand(Query, myConn);
MySqlDataReader myReader;
try
{
myConn.Open();
myReader = cmdDB.ExecuteReader();
MessageBox.Show("Save Successful");
while (myReader.Read())
{
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
} //close save button event
我提交给数据库的字符串在文本框中看起来像这样:
C:\Users\Meta\Desktop\Alpha
但是他们是这样提交到数据库的:
C:UsersMetaDesktopAlpha
在此先感谢(我是使用 C# 使用 MySQL 数据库的新手,我的 C# 也很生疏)。
你应该使用 SQL Parameters,但如果你想快速解决这个问题,请在路径中添加双斜杠,这样输出将是:C:\Users\Meta\Desktop\Alpha
string Query = "insert into ephex_contcollections.Paths (toindex,indexed) values('" + this.txtToIndexPath.Text.Replace(@"\" , @"\") + "','" + this.txtIndexedPath.Text.Replace(@"\" , @"\") + "') ;";
您遇到的问题是,即使在字符串中使用斜线,也有一定意义。
您需要像这样在字符串中使用特殊字符作为反斜杠
"hello \ world" = "hello \ world"
还有,你可以在字符串前面加上@符号,不使用转义符,但我不推荐,像这样的字符串 s = @ "hello \ world" = " hello \ world".
希望对您有所帮助。
编辑:Whosebug 一直在编辑我的反斜杠