2016-11-01 3 views
0

Итак, я пытаюсь вернуть значение из ввода с помощью asp.net. Однако проблема заключается в том, что я продолжаю получать значение null. Но если я ввожу строку, как если бы она была вставлена ​​с помощью запроса, она отлично работает.Вход в MySQL из значения NULL ASP.Net

Почему я получаю нулевое значение?

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; 
      } 
     } 

Однако, как только я попытаюсь сделать это вводом из другого источника, это будет null.

Так что мой вопрос здесь:

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)); 

Класс с застройщиком: Что, вероятно, не так недавно полностью. TID

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

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

    } 
} 

Что, если я должен был догадаться, что это мой конструктор ... Есть мысли?

EDIT

Понял частично работать, он просто возвращается неправильные значения.

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 + "%"); 

ответ

1

Не ставьте параметр заполнитель между отдельными кавычками. Таким образом, он становится литеральной строкой, и ваш запрос выполняет поиск значения для идентификатора столбца, равного литеральной строке '@prmGuid', и, конечно, ничего не возвращается с этим условием.

Просто измените SQL команды текст

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

у меня есть, это была последняя попытка при получении его на работу. Он по-прежнему возвращается как null – Mokey

+0

Удалили ли вы комментарий из строки AddWithValue? И неясно, что является результатом этого кода: _new tID (ban.GuidOrIP)); _ он, похоже, не возвращает такие значения, как 'e7af78997ef220a557c97a1a4c11e0c2' – Steve

+0

Ну, это должно вернуть значения строки get на основе вставленной строки который находится в базе данных. Но он просто возвращается как null. Я новичок в C#, и я уже нахожусь на линии кода в течение 3 дней. Мой резиновый ducky находится через дом – Mokey

Смежные вопросы