gpt4 book ai didi

c# - 如何使用 C# 检查内联查询中的 show grant?

转载 作者:行者123 更新时间:2023-11-30 22:19:38 25 4
gpt4 key购买 nike

我有检查授权的内联查询 ex.SHOW GRANTS FOR root @'localhost';

我想将它作为内联查询传递,但它不起作用并抛出“格式错误的主机名(非法符号:'@')

这是我的代码:

//Username = "root"
//Hostname = "localhost"
//Query: "SHOW GRANTS FOR root @'localhost';"
objConn.InitCommand(CommandType.Text, "SHOW GRANTS FOR @Username @'@Hostname';");
objConn.AddParameter(ref lngErrorNo, ref strErrorMsg, "@Username", MySqlDbType.String, ParameterDirection.Input, Username);
objConn.AddParameter(ref lngErrorNo, ref strErrorMsg, "@Hostname", MySqlDbType.String, ParameterDirection.Input, Hostname);
if (objConn.ExecuteCommandObjRsReader(ref reader, ref lngErrorNo, ref strErrorMsg) == false)
blnReturn = false;

它抛出“Malformed hostname (illegal symbol: '@')”//通过sql抛出

有人可以建议我在这里缺少什么吗?

最佳答案

尽管尝试了各种绑定(bind)和搜索,但我无法像 mysql 期望的那样通过命令中间的嵌入式 @ 符号。该符号混淆了与其他 2 个以 @ 符号开头的可能参数的绑定(bind)。

因此,我不得不坚持使用 .Prepare().AddWithValue() 没有正常绑定(bind)的串联。

请注意,以下是 .Net MySQL 连接器。

经过测试,循环成功地遍历了行。

警告:在安全绑定(bind)可以用于用户提供的数据之前,仅将其用作稻草人。

   public void ShowGrants(string pUsername, string pHostname)
{ //
string sOut;
using (MySqlConnection lconn = new MySqlConnection(connString))
{
lconn.Open();
using (MySqlCommand cmd = new MySqlCommand())
{ // drewnow

cmd.Connection = lconn;
cmd.CommandText = "SHOW GRANTS FOR '"+pUsername+"'@'"+pHostname+"'";
using (MySqlDataReader rs = cmd.ExecuteReader())
{
while (rs.Read())
{
sOut = rs.GetString(0);
// do something with it
}
}
}
}
}

关于c# - 如何使用 C# 检查内联查询中的 show grant?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37024225/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com