Когда я использую переменную, результат command.ExecuteScalar()
всегда пуст (пуст), я не получаю никаких сообщений об ошибках, просто пустое значение, но когда я использую тот же SQL запрос без использования переменной это работает.
То, что я пробовал до сих пор:
//variable @num is a long and contais the value = '8131818060'
string teste = num.ToString();
// 1º: In this case ip value: it's empty
string sql = @"select Sites_IP_Rede from tblRamais where E164 = '" + teste + "'";
command = new SqlCommand(sql, con.conectar());
var ip = (string)command.ExecuteScalar();
con.desconectar();
MessageBox.Show("IP Value: " + ip);
// 2º: In this case ip value: it's empty
string sql = @"select Sites_IP_Rede from tblRamais where E164 = " + teste;
command = new SqlCommand(sql, con.conectar());
var ip = (string)command.ExecuteScalar();
con.desconectar();
MessageBox.Show("IP Value: " + ip);
// 3º: In this case ip value: it's empty
string sql = @"select Sites_IP_Rede from tblRamais where E164 = " + num";
command = new SqlCommand(sql, con.conectar());
var ip = (string)command.ExecuteScalar();
con.desconectar();
MessageBox.Show("IP Value: " + ip);
// 4º In this case ip value: it's empty
string sql = @"select Sites_IP_Rede from tblRamais where E164 = @e164";
SqlCommand command = new SqlCommand(sql, con.conectar());
command.Parameters.Clear();
command.Parameters.AddWithValue("@e164", teste);
//string ip = command.ExecuteScalar() as string;
var ip = (string)command.ExecuteScalar();
MessageBox.Show("IP Value:: " + ip);
con.desconectar();
// 5º In this case ip value: it's empty
string sql = @"select Sites_IP_Rede from tblRamais where E164 = @e164";
SqlCommand command = new SqlCommand(sql, con.conectar());
command.Parameters.Add(new SqlParameter
{
ParameterName = "@e164",
Value = teste,
}
);
//string ip = command.ExecuteScalar() as string;
var ip = (string)command.ExecuteScalar();
MessageBox.Show("IP Value: " + ip);
con.desconectar();
//6º This one it's the only way it works
// That's the only way it works, When i write the parameter = "8131818060"
string sql = "select Sites_IP_Rede from tblRamais where E164 = 8131818060";
SqlCommand command = new SqlCommand(sql, con.conectar());
string IP = (string)command.ExecuteScalar();
MessageBox.Show("IP Value: " + IP);
//The ip values in this case is "10.101.1.0"
E164 - это nvarchar (10)
Я сделал тест, и результат 1 верен, так что teste равен "8131818060", но result2 равен false, "sql" не равен "sql2"
bool result1 = string.Equals(teste,"8131818060");
string sql = "select Sites_IP_Rede from tblRamais where E164 = 8131818060";
string sql2 = "select Sites_IP_Rede from tblRamais where E164 = " + teste;
bool result2 = string.Equals(sql,"sql2");
// по предложению Roeland // Я проверял таким образом, и я получение ошибки NullReferenceException для ip.ToString () //System.NullReferenceException: ссылка на объект не установлена для экземпляра объекта
//num is a long variable pass from the user
string sql = @"select Sites_IP_Rede from tblRamais where E164 = '" + num.ToString() + "'";
SqlCommand command = new SqlCommand(sql, con.conectar());
var ip = command.ExecuteScalar();
con.desconectar();
MessageBox.Show("IP Value: " + ip.ToString());