Используя этот код, я могу получить данные из базы данных Oracle.
public static ArrayList CheckIfPrinterExists()
{
string printerName = @"PRINTER1234";
ArrayList colValues = new ArrayList();
try
{
string constr = @"DATA SOURCE=someSource;PERSIST SECURITY INFO=True;USER ID=root;password=root";
OracleConnection con = new OracleConnection(constr);
con.Open();
OracleCommand cmd = con.CreateCommand();
cmd.CommandText = @"select * from print_spooler where spoolername = 'Printer1234'";
OracleDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
colValues.Add(reader["id"] + ";" + reader["id2"] + ";" + reader["id3"]);
}
con.Dispose();
reader.Dispose();
return colValues;
}
catch (Exception ex)
{
Console.WriteLine("Error : {0}", ex);
return null;
}
}
Я попытался изменить код с помощью подготовленного оператора, который не работает.Что я здесь не так делаю?
public static ArrayList CheckIfPrinterExists()
{
string printerName = @"printer1234";
ArrayList colValues = new ArrayList();
try
{
string constr = @"DATA SOURCE=someSource;PERSIST SECURITY INFO=True;USER ID=root;password=root";
OracleConnection con = new OracleConnection(constr);
con.Open();
OracleCommand cmd = con.CreateCommand();
cmd.CommandText = @"select * from print_spooler where spoolername = @ParamPrinterName";
cmd.Parameters.Add(new OracleParameter("@ParamPrinterName", printerName));
OracleDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
colValues.Add(reader["id"] + ";" + reader["id2"] + ";" + reader["id3"]);
}
con.Dispose();
reader.Dispose();
return colValues;
}
catch (Exception ex)
{
Console.WriteLine("Error : {0}", ex);
return null;
}
}
Вот лучшее представление об изменениях (если я прав, 2-й неработающий optin лучше использовать из-за внедрения SQL).