2011-09-22 23 views
0

我遇到一些問題,當我從我的vb.net程序向我的mysql數據庫發送數據時,發送了數據,但缺少一些東西,請讓我解釋一下。將我的vb.net查詢之後的反斜槓消除到Mysql

我的查詢很簡單我發送一個文件路徑到我的數據庫,這樣我就可以有一個php網站獲取數據並與我的數據庫中的數據建立鏈接,但是當我發送數據的結果這個樣子......看起來應該

\server_pathappsInst_pcLicences_ProceduresDivers estCheck_list.doc 

\\server_path\apps\Inst_pc\Licences_Procedures\Divers\test\Check_list.doc 

我不知道如果我的代碼,這不是好還是我我的MySQL服務器上的配置請幫助...

這裏是我的代碼

'Construct the sql command string 
     cmdString = "INSERT into procedures(Nom, Lien_Nom, Commentaires) VALUES('" & filenameOnly_no_space_no_accent & "', '" & str_Lien_Nom_Procedure & "', '" & str_commentaires_Procedure & "')" 

     ' Create a mysql command 
     Dim cmd As New MySql.Data.MySqlClient.MySqlCommand(cmdString, conn) 

     Try 
      conn.Open() 
      cmd.ExecuteNonQuery() 
      conn.Close() 
     Catch ex As MySqlException 
      MsgBox("Error uppdating invoice: " & ex.Message) 
     Finally 
      conn.Dispose() 
     End Try 

對不起,我接到一個電話,並可以繼續我的評論所以這裏的休息:X

嗯,我想這將工作,但我的計劃從來沒有使用相同的路徑,因爲在上傳服務器上的文件,所以這一次我想上傳的文件是這樣的路徑

 \\Fsque01.sguc.ad\apps\Inst_pc\Licences_Procedures\Divers\test\Check_list.doc 

,但它的將是別的東西,所以我不能硬編碼的路徑,我一直在尋找更多的下一次Ø fa我可能不知道的SQL查詢,因爲我已經考慮過搜索我的字符串,並且如果它找到反斜槓它會添加另一個,但我覺得它不是一個很好的方法來編寫整個事件...

反正非常感謝您的幫助

+0

您應該在轉義它們時插入原始值。逃脫它們。 – Ryan

回答

0

當你構建插入SQL它沒有反斜槓逃脫。例如:

INSERT into procedures(Nom, Lien_Nom, Commentaires) VALUES('\\server_path\apps\Inst_pc\Licences_Procedures\Divers\test\Check_list.doc 

的反斜槓需要轉義,如:

filenameOnly_no_space_no_accent = filenameOnly_no_space_no_accent.Replace("\\", "\\\\") 

您應該:

INSERT into procedures(Nom, Lien_Nom, Commentaires) VALUES('\\\\server_path\\apps\\Inst_pc\\Licences_Procedures\\Divers\\test\\Check_list.doc 

你可以用類似(約VB.NET不知道)這樣做也看看參數化的查詢,這可以保護你免受一些SQL注入攻擊,並且與拼接在一起的SQL相比,它更容易編寫和維護(這沒有經過測試,我對MySQL參數不熟悉sed查詢如此YMMV):

cmdString = "INSERT into procedures(Nom, Lien_Nom, Commentaires) VALUES(?nom, ?lien_nom, ?commentaires)" 
Dim cmd As New MySql.Data.MySqlClient.MySqlCommand(cmdString, conn) 
cmd.Parameters.Add("?nom", filenameOnly_no_space_no_accent.Replace("\\", "\\\\")) 
cmd.Parameters.Add("?lien_nom", str_Lien_Nom_Procedure) 
cmd.Parameters.Add("?commentaires", str_commentaires_Procedure) 

這是基於我在this tutorial的末尾找到的東西。

+0

哇我得到它與逃脫的方法生病發布我的代碼爲未來的參考和其他人:P –

0

使用雙反斜線不是單反斜線

+0

讓我知道,如果它沒有工作 – Imdad

0
cmdString = "INSERT into procedures(Nom, Lien_Nom, Commentaires) VALUES(?nom,?Lien_Nom,?Commentaires)" 

     ' Create a mysql command 
     Dim cmd As New MySqlCommand(cmdString, conn) 
     cmd.Parameters.AddWithValue("?nom", filenameOnly_no_space_no_accent) 
     cmd.Parameters.AddWithValue("?Lien_Nom", str_Lien_Nom_Procedure) 
     cmd.Parameters.AddWithValue("?Commentaires", str_commentaires_Procedure) 


     Try 
      conn.Open() 
      cmd.ExecuteNonQuery() 
      conn.Close() 
     Catch ex As MySqlException 
      MsgBox("Error uppdating invoice: " & ex.Message) 
     Finally 
      conn.Dispose() 
     End Try