【问题标题】:Input to MySQL from ASP.Net NULL value从 ASP.Net NULL 值输入到 MySQL
【发布时间】:2016-11-01 13:46:58
【问题描述】:

所以我试图从 asp.net 的输入中返回一个值。然而问题是,我一直收到null 值。但是,如果我输入字符串,就好像它是通过查询插入的一样,它工作正常。

为什么我得到一个空值?

This Works:
 [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 `BanID`, `GUID`, `BanTime`, `Reason`, `BanType`, `Proof` FROM `a3bans`.`bans` WHERE  `GUID`= 'e7af78997ef220a557c97a1a4c11e0c2'", conDataBase);  //@prmGuid, conDataBase); // Returning a null value?!

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

                conDataBase.Open();
                dbReader = selectCommand.ExecuteReader();
                try
                {

                    while (dbReader.Read())
                    {
                        tBan searchBan = new tBan();
                        searchBan.BanID = dbReader.GetString("BanID");
                        searchBan.GuidOrIP = dbReader.GetString("GUID");
                        searchBan.BanTime = dbReader.GetString("BanTime");
                        searchBan.BanType = dbReader.GetString("BanType");
                        searchBan.BanReason = dbReader.GetString("Reason");
                        searchBan.BanType = dbReader.GetString("BanType");
                        searchBan.Proof = dbReader.GetString("Proof");
                        bans = searchBan;
                    }

                }
                catch (Exception ex)
                {

                }
                finally
                {
                    dbReader.Close();
                    conDataBase.Close();
                }
                return bans.Proof;
            }
        }

但是,一旦我尝试将其作为另一个来源的输入,它就为空。

所以我的问题就在这里:

MySqlCommand selectCommand = new MySqlCommand("SELECT `BanID`, `GUID`, `BanTime`, `Reason`, `BanType`, `Proof` FROM `a3bans`.`bans` WHERE  `GUID`= '@prmGuid'", conDataBase); 

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

具有构造函数的类: 这可能是完全错误的。 时间标识

namespace A3Bans.Schemas
{
    public class tID
    {
        public tID(string guidOrIP)
        {
            GuidOrIP = guidOrIP;
        }

        public string GuidOrIP { get; set; }
        public string BanID { get; set; }

    }
}

如果我不得不猜测它是我的构造函数...有什么想法吗?

编辑

让它部分工作,它只是返回错误的值。

MySqlConnection con = new MySqlConnection(dbConnection);
            MySqlCommand cmd;
            con.Open();
            MySqlDataReader dbReader;
            string cmdText = "SELECT `BanID`, `GUID`, `BanTime`, `Reason`, `BanType`, `Proof` FROM `a3bans`.`bans` WHERE  `GUID` LIKE @pGUID";


            cmd = new MySqlCommand(cmdText, con);

            cmd.Parameters.AddWithValue("@pGUID", "%" + bans.GuidOrIP + "%");

【问题讨论】:

    标签: c# mysql asp.net get set


    【解决方案1】:

    不要在单引号之间放置参数占位符。这样,它就变成了文字字符串,您的查询搜索列 GUID 的值,该值等于文字字符串“@prmGuid”,当然,此条件不会返回任何内容。

    只需将您的 sql 命令文本更改为

    ..... WHERE `GUID`= @prmGuid", conDataBase); 
    

    【讨论】:

    • 我有,这是让它工作的最后一次尝试。它仍然返回为 null
    • 您是否从 AddWithValue 行中删除了评论?而且不清楚这段代码的结果是什么: new tID(ban.GuidOrIP)); 它似乎没有返回像 'e7af78997ef220a557c97a1a4c11e0c2' 这样的值
    • 嗯,它应该根据插入的位于数据库中的字符串返回获取字符串值。但它只是返回为空。我是 c# 的新手,我已经在代码行上待了 3 天。我的橡皮鸭在房子对面
    • 如果 AddWithValue(@prmGuid, ban.GuidOrIP);
    • 它返回空值,我的数据库中也没有空值。 ` MySqlCommand selectCommand = new MySqlCommand("SELECT BanID, GUID, BanTime, Reason, BanType, Proof FROM a3bans.bans WHERE GUIDm =" );`selectCommand.Parameters.AddWithValue("@prmGuid", ban.GuidOrIP);
    猜你喜欢
    • 2018-05-10
    • 1970-01-01
    • 2017-07-01
    • 2010-10-28
    • 1970-01-01
    • 2019-06-29
    • 2011-02-16
    • 2015-05-01
    • 1970-01-01
    相关资源
    最近更新 更多