2015-01-13 2 views
1

В настоящее время я работаю над проектом, в котором мне нужно отправить путь к базе данных и иметь возможность вытащить этот путь из базы данных.C# удаление символов из строки при отправке в базу данных

В настоящее время я могу отправить путь к базе данных и вытащить данные из базы данных, однако, косые черты в пути, похоже, удаляются из строки при отправке в базу данных.

Как я могу прекратить \ удаляться при отправке в базу данных и при извлечении из базы данных?

Вот мой сохранить код кнопки события:

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 \ Альфа

Но они представляют в базу данных, как это:

C: UsersMetaDesktopAlpha

Заранее спасибо (я новичок в использовании баз данных MySQL с C# и я ржавый на моей C#, а).

+1

Вы должны построить параметризованный запрос вместо конкатенации. – gmiley

+2

Обсуждение в очереди SQL. Параметрируйте свои заявления. http://stackoverflow.com/questions/652978/parameterized-query-for-mysql-with-c-sharp –

+1

использовать параметры вместо текста текстового поля в запросе – prospector

ответ

2

Вы должны использовать 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(@"\" , @"\\") + "') ;"; 
+0

Спасибо! Я адаптировал это в нескольких местах (подавая и вытягивая данные), программа, над которой я работаю, предназначена для офиса, в котором я работаю, и только 3 человека (генеральный директор, главный операционный директор и я) будут иметь доступ к программе, поэтому я должен быть хорошо используя этот метод. – Meta

+0

Используйте параметры Sql независимо от того, кто обращается к вашему приложению.Что, если у генерального директора есть приятель, который знает безопасность, и он проверяет ваше приложение, чтобы узнать, является ли он уязвимым для Sql Injection. –

+0

Всегда используйте параметры Sql. Всегда. Не делать этого, как дело, приведет к тому, что вы не будете делать это, когда это будет иметь значение больше. Развивайте хорошие привычки сейчас, а не после нарушения ... –

2

Проблема у Вас есть то, что через косую черту , даже внутри строки, означает что-то.

Вам нужно использовать специальный символ для обратного косых черт в вашей строке как этот

«привет мир» \\ = «привет \ Мир»

также, вы можете использовать символ @ в передней части string, чтобы не использовать escape-символы, но я не рекомендую его, как эта строка s = @ "hello \ world" = "hello \ world".

Надеюсь, что это поможет.

редактировать: StackOverflow продолжает редактирование моих обратных слэшей из

Смежные вопросы