c# - asp.net 到 MySql 的问题。尝试从输入返回信息

标签 c# mysql asp.net return parameter-passing

当我尝试使用 asp.net 调用字符串时,例如 e7af78997ef220a557c97a1a4c11e0c2 返回值总是返回 null。我知道它不是空的(所有 ID 都采用该格式或 IP 格式)。当我输入一个 int 列时它会起作用。

所以我的问题是返回总是空的,Visual Studio 说

"An unhandled exception of type 'System.FormatException' occurred in PresentationFramework.dll

Additional information: Input string was not in a correct format."

我知道它与 MySqlCommand SelectCommand = new MySqlCommand("select * from a3bans.bans where GUID = '"+ ban.GuidOrIP + "' ; ", conDataBase); 和我有关我几乎肯定它与

'" + ban.GuidOrIP + "' ; ", conDataBase);`

我想我已经尝试了一百万种方法并且要么出现语法错误要么 Null

我认为这个问题与数据库输入而不是输出有关。在“选择”中输入 我只是使用常规查询输入 ID,但是它填充了信息。当尝试使用我的 tban 时({ getter; Setter;} 它只返回 Null ...

我研究过的所有内容都引用了带有 .Text 的按钮,似乎对 getter 和 setter 没有任何帮助。

        [HttpPost]
        [Route("A3Bans/searchBan")]
        public string oSearchBan(tBan ban)
        {
            {
                tBan bans = new tBan();
                string dbConnection = "datasource=127.0.0.1;port=3306;username=admin;password=00000";
                MySqlConnection conDataBase = new MySqlConnection(dbConnection);
                MySqlDataReader dbReader;
                MySqlCommand SelectCommand = new MySqlCommand("select * from a3bans.bans where GUID = '" + ban.GuidOrIP + "' ; ", conDataBase); // Returning a null value?!

                conDataBase.Open();
                dbReader = SelectCommand.ExecuteReader();
                while (dbReader.Read())
                {
                    tBan searchBan = new tBan();
                    searchBan.GuidOrIP = dbReader.GetString("GUID");
                    searchBan.BanType = dbReader.GetString("BanType");
                    searchBan.BanReason = dbReader.GetString("Reason");
                    searchBan.Proof = dbReader.GetString("Proof");
                    bans = searchBan;
                }
                dbReader.Close();
                return bans.Proof;
            }
        }

如果我用字符串替换查询字符串 selectQuery = "Select * FROM a3bans.bans WHERE BanID="+ int.Parse(schBanID.Text); 它将从客户端返回正确的值边。如果我将其转换为 API,它会返回正确的值。但它是一个 int 而不是一个字符串。

更新: 我使用它只适用于 int 值而不适用于字符串。

        [HttpPost]
        [Route("A3Bans/searchBan")]
        public string oSearchBan(tBan ban)
        {
            {
                tBan bans = new tBan();
                string dbConnection = "datasource=127.0.0.1;port=3306;username=admin;password=0000";
                MySqlConnection conDataBase = new MySqlConnection(dbConnection);
                MySqlDataReader dbReader;
                conDataBase.Open();

                // Returns a null value from bans.Proof
                // If placing a /w real GUID without null fields, rather than "ban.GuidOrIP" , the return populates properly. 
                // and works with int
                // Either Null or Invalid Syntax...
                MySqlCommand selectCommand = new MySqlCommand("SELECT * FROM a3bans.bans WHERE (BanID) LIKE (@BanID)", conDataBase);
                selectCommand.Parameters.AddWithValue("@BanID", ban.BanID);
                selectCommand.ExecuteNonQuery()

这适用于 int...但仍然不适用于字符串...我该怎么做才能让它适用于文本/数字字符串?

最佳答案

[HttpPost]
        [Route("A3Bans/searchBan")]
        public string oSearchBan(tBan ban)
        {
            {
                tBan bans = new tBan();
                string dbConnection = "datasource=127.0.0.1;port=3306;username=admin;password=00000";
                MySqlConnection conDataBase = new MySqlConnection(dbConnection);
                MySqlDataReader dbReader;

//<Changes>
                MySqlCommand SelectCommand = new MySqlCommand("select * from a3bans.bans where [GUID] =@prmGuid  ", conDataBase); // Returning a null value?!

                selectCommand.Parameters.AddWithValue("@prmGuid", new Guid(ban.GuidOrIP));

//</Changes end>
                conDataBase.Open();
                dbReader = SelectCommand.ExecuteReader();
                while (dbReader.Read())
                {
                    tBan searchBan = new tBan();
                    searchBan.GuidOrIP = dbReader.GetString("GUID");
                    searchBan.BanType = dbReader.GetString("BanType");
                    searchBan.BanReason = dbReader.GetString("Reason");
                    searchBan.Proof = dbReader.GetString("Proof");
                    bans = searchBan;
                }
                dbReader.Close();
                return bans.Proof;


            }
        }

关于c# - asp.net 到 MySql 的问题。尝试从输入返回信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40336226/

相关文章:

c# - NHibernate firebird 错误 - 索引超出范围

c# - 数组初始值设定项只能用于变量或字段初始值设定项吗?

c# - 如何在 linq c# 中使用子字符串以及如何在计划文本中绑定(bind) convert html 标签。在 asp.net 中绑定(bind) GridView 的问题

javascript - 当我在Firefox中使用addClass/removeClass时,javascript函数“createCallback”被调用了50次以上

javascript - 如何从一个按钮单击事件获取另一个按钮单击事件的值

c# - ASP.Net MVC 如何在 ApplicationUser 和我自己的类之间创建一对多关系?

Python添加到MySQL数据库

mysql - 如何根据列中的逗号分隔值进行选择

php - 通过单击在 xampp 中运行 php 项目

c# - VS2013专业本地64位调试MSVSMON问题