Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#提交到数据库时从字符串中剥离字符_C#_Mysql_Database_Visual Studio - Fatal编程技术网

c#提交到数据库时从字符串中剥离字符

c#提交到数据库时从字符串中剥离字符,c#,mysql,database,visual-studio,C#,Mysql,Database,Visual Studio,我目前正在从事一个项目,我需要向数据库提交一个文件路径,并能够从数据库中提取该路径 目前,我可以将路径提交到数据库并从数据库中提取数据,但是当我提交到数据库时,路径中的斜杠似乎从字符串中剥离 提交到数据库和从数据库中提取时,如何阻止\被剥离? 以下是我的保存按钮事件代码: private void btnSaveSettings_Click(object sender, EventArgs e) { string myConnection = "datasource=localhost;

我目前正在从事一个项目,我需要向数据库提交一个文件路径,并能够从数据库中提取该路径

目前,我可以将路径提交到数据库并从数据库中提取数据,但是当我提交到数据库时,路径中的斜杠似乎从字符串中剥离

提交到数据库和从数据库中提取时,如何阻止\被剥离?

以下是我的保存按钮事件代码:

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

提前感谢(我对使用MySQL数据库和C#还不熟悉,对我的C#也很生疏)。

您应该使用,但如果您想快速解决这个问题,请在路径上添加双斜杠,以便输出为:
C:\\Users\\Meta\\Desktop\\Alpha

string Query = "insert into ephex_contcollections.Paths (toindex,indexed) values('" + this.txtToIndexPath.Text.Replace(@"\" , @"\\") + "','" + this.txtIndexedPath.Text.Replace(@"\" , @"\\") + "') ;";
您应该使用,但如果您想快速解决此问题,请在路径中添加双斜杠,以便输出为:
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”

希望有帮助


编辑:stackoverflow一直在编辑我的反斜杠

您遇到的问题是使用斜杠,即使是在字符串中,也意味着什么

您需要在字符串中使用特殊字符作为反斜杠,如下所示

“hello\\world”=“hello\world”

另外,您可以使用字符串前面的@符号来避免使用转义字符,但我不建议使用它,例如字符串s=@“hello\world”=“hello\world”

希望有帮助


编辑:stackoverflow继续编辑我的反斜杠

您应该构造一个参数化查询,而不是字符串连接。队列SQL注入讨论。参数化您的语句。使用参数而不是文本框查询中的文本“\”是c#中的转义字符。我不确定它是如何使用串联字符串的,但如果要硬编码查询以插入单个记录,\字符需要自行转义。例如:string Query=“insert into ephex\u contcollections.path(toindex,indexed)值('Home','C:\\Users\\Home')”您应该构造一个参数化查询,而不是字符串串联。将SQL注入讨论排入队列。参数化您的语句。使用参数而不是文本框查询中的文本“\”是c#中的转义字符。我不确定它是如何使用串联字符串的,但如果要硬编码查询以插入单个记录,\字符需要自行转义。例如:string Query=“insert into ephex\u contcollections.path(toindex,index)值('Home','C:\\Users\\Home')”谢谢!我已经在几个地方(提交和提取数据)采用了这种方法,我正在为我工作的办公室编写程序,只有3个人(CEO、COO和我自己)可以访问该程序,因此我应该很好地使用这种方法。无论谁访问你的应用程序,都要使用Sql参数。如果首席执行官有一个了解安全性的伙伴,他测试你的应用程序,看看它是否容易接受Sql注入,那该怎么办?始终使用Sql参数。总是。如果不把这当作一种实践,那么当它更重要的时候,你就不会这样做。现在就养成好习惯,而不是在违约之后……谢谢!我已经在几个地方(提交和提取数据)采用了这种方法,我正在为我工作的办公室编写程序,只有3个人(CEO、COO和我自己)可以访问该程序,因此我应该很好地使用这种方法。无论谁访问你的应用程序,都要使用Sql参数。如果首席执行官有一个了解安全性的伙伴,他测试你的应用程序,看看它是否容易接受Sql注入,那该怎么办?始终使用Sql参数。总是。如果不把这当作一种实践,那么当它更重要的时候,你就不会这样做。现在就养成好习惯,而不是在违约之后。。。