2011-05-17 44 views
0

我已經成功地創建一個用戶名=「根」和主機=「127 .0.0.1」,使用mysql命令(客戶端模式)如下:創建存儲過程(服務器模式)的MySQL用戶

sql = String.Format("CREATE USER '{0}'@'{1}' IDENTIFIED BY '{2}'; GRANT ALL PRIVILEGES ON * . * TO '{0}'@'{1}' IDENTIFIED BY '{2}' WITH GRANT OPTION;", userName, serverHost, userPassword) 

當上面的腳本將其更改爲存儲過程(服務器模式)時,我發現如下錯誤:(錯誤1064-您的SQL語法中有錯誤;請檢查與Yout MySQL服務器版本對應的手冊爲正確的語法使用附近'通過'在線1)

ScriptExec(String.Format("DROP PROCEDURE IF EXISTS mySchema.SP_CreateUser $$" + 
         "CREATE [email protected] PROCEDURE {0}.SP_CreateUser(IN userName VARCHAR(250), IN serverHost VARCHAR(250), IN userPassword VARCHAR(250)) " + 
         "BEGIN " + 
         "SET @buf = CONCAT('CREATE USER ',userName,'@',serverHost,' IDENTIFIED BY ',userPassword); PREPARE stmt FROM @buf; EXECUTE stmt; DEALLOCATE PREPARE stmt;" + 
         "SET @buf1 = CONCAT('GRANT ALL PRIVILEGES ON * . * TO ',userName,'@',serverHost,' IDENTIFIED BY ',userPassword,' WITH GRANT OPTION'); PREPARE stmt1 FROM @buf1; EXECUTE stmt1; DEALLOCATE PREPARE stmt1;" + 
         "END $$")) 

Public Function ScriptExec(ByVal sql As String) As Boolean 
    Dim stsResult As Boolean = Nothing 
    Dim has As Integer = Nothing 
    Dim script As New MySqlScript(objCon, sql) 
    script.Delimiter = "$$" 
    Try 
     has = script.Execute() 
     If has > 0 Then stsResult = True 
    Catch ex As MySqlException 
     MessageBox.Show("Error occurred in ScriptExec Function" & vbCrLf & ex.Number & " – " & ex.Message) 
    Finally 
     script.Delimiter = ";" 
    End Try 
    Return stsResult 
End Function 

有沒有解決我上面的問題?

感謝&最好的問候,

Yudha

回答

0

你是不是缺少在你的SQL代碼開頭

DELIMITER $$ 

聲明?沒有它,引擎將不知道如何解釋$$

+0

我在ScriptExec函數中使用了script.Delimiter =「$$」。發生錯誤的可能性是因爲格式CREATE USER username @ serverHost,應該CREATE USER'username'@'serverHost'。那裏有一個開頭和結尾的報價。我如何在CONCAT中使用開始和結束的引號,因爲我使用了userName和serverHost的變量? – Yudha 2011-05-17 16:56:31

+0

是的,我期望的。我更改我的用戶名'@',userPassword成爲QUOTE(用戶名),'@',QUOTE(serverHost)和'IDENTIFIED BY',userPassword)爲'IDENTIFIED BY',QUOTE(userPassword))。所有現在正常運作。感謝你們對我的幫助。 // Yudha – Yudha 2011-05-17 17:17:19