2011-05-17 38 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