【问题标题】:C# MySql CREATE USERC# MySql 创建用户
【发布时间】:2014-05-04 20:00:11
【问题描述】:

我试图用 C# 做一个注册声明。显然我做不到。我不完全知道问题是什么。话虽如此,这里是一个sn-p:

MySqlConnection Connection = 
 new MySqlConnection("SERVER=localhost;UID=root;");
MySqlCommand Command = 
 new MySqlCommand("CREATE USER 'testuser'@'localhost' 
 IDENTIFIED BY 'superpassword';", Connection);
Command.ExecuteNonQuery();

【问题讨论】:

  • 你从这个命令得到什么错误?
  • 哦,这很难说。我的异常消息输出为德语。我将尝试翻译:基于 0(null) 的索引必须大于或等于 Null 并且小于参数列表的大小。

标签: c# mysql createuser


【解决方案1】:

执行命令前,需要打开连接

using(MySqlConnection Connection = new MySqlConnection("SERVER=localhost;UID=root;"))
using(MySqlCommand Command = new MySqlCommand("CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'superpassword';", Connection))
{
    Connection.Open();
    Command.ExecuteNonQuery();
}

不要忘记将一次性命令包含在 Using 语句中

编辑查看您的代码(为什么不立即放在这里?)很明显错误在哪里

这一行

this.COMMAND = String.Format("CREATE USER '{0}'@'{1}' IDENTIFIED BY '{3}';", username, host, password); 

应该是

this.COMMAND = String.Format("CREATE USER '{0}'@'{1}' IDENTIFIED BY '{2}';", username, host, password); 

传递给字符串格式的参数有3个,所以string.format中用于占位符的索引是0、1和2。
您使用 3 作为密码,这给出了超出范围的异常

【讨论】:

  • 哦,抱歉差点忘了。谢谢 ;) 但我仍然有问题。连接.打开();没有修复它:(我用 if(Connection.State == ConnectionState.Open){ Connection.Close();} 关闭了我的连接,但我认为它的作用非常相似:)
  • 错误信息是什么?它是在 Command.ExecuteNonQuery 行上引发的?我在这里测试了相同的代码,这里没有任何错误
  • 如果我只想创建一个MySql-User,是否需要指定它?如果我在 PHPMyAdmin 中键入此命令而不选择某个数据库,它会毫无问题地创建一个新用户。
  • 不,我测试过了,你不需要它
  • 查看这里查看更详细的sn-p。我做了一个类,它有一些基本的 MySql 功能......所以不要怀疑^_^ pastebin.com/1YQLT9cJ 感谢您的支持。
猜你喜欢
  • 1970-01-01
  • 2019-06-29
  • 2018-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-15
  • 2015-12-07
相关资源
最近更新 更多