i haben eine OracleDB mit Einträgen:OracleCommand Parameter Varchar2 paradoxon ;-)
1, Test, Test
2, Test, Test
ID-Nummer (8,0)
Vorname (CHAR (30 BYTE))
Secondname CHAR (30 Byte)
und ich habe jetzt diese Zeilen von Code, um diese Einträge zu wählen:
string query = @"SELECT ID,FIRSTNAME,LASTNAME FROM persdata
WHERE (FIRSTNAME = 'test')";
var command = new OracleCommand(query, dbConnection)
{ CommandType = CommandType.Text, BindByName = true };
IDataReader reader = command.ExecuteReader();
while (reader.Read())
{
int someColumn = reader.GetInt32(reader.GetOrdinal("ID"));
string anotherColumn = reader.GetString(reader.GetOrdinal("VORNAME"));
string thirdColumn = reader.GetString(reader.GetOrdinal("NACHNAME"));
Console.WriteLine(
String.Format("{0}: {1}, {2}", someColumn, anotherColumn, thirdColumn)
);
}
Dies funktioniert gut, aber wenn ich Seine Parameter wie:
string query = @"SELECT ID,FIRSTNAME,LASTNAME FROM persdata
WHERE (FIRSTNAME = :param)";
var command = new OracleCommand(query, dbConnection)
{ CommandType = CommandType.Text, BindByName = true };
command.Parameters.Add(":param", OracleDbType.Varchar2).Value = "test";
IDataReader reader = command.ExecuteReader();
while (reader.Read())
{
int someColumn = reader.GetInt32(reader.GetOrdinal("ID"));
string anotherColumn = reader.GetString(reader.GetOrdinal("FIRSTNAME"));
string thirdColumn = reader.GetString(reader.GetOrdinal("LASTNAME"));
Console.WriteLine(
String.Format("{0}: {1}, {2}", someColumn, anotherColumn, thirdColumn)
);
}
ich nicht alles bekommen! Aber wenn ich die Parametervalue wie gesetzt:
command.Parameters.Add(":param", OracleDbType.Varchar2).Value = "test ";
ich diese Einträge ò.ó Ist das der usal Art und Weise, dass ich die Parameter füllen müssen? Aber warum braucht der direkte Weg das nicht?
So ist der richtige Weg, um die Spaltengröße zu erhalten und den Parameterwert zu füllen? oder mache ich es falsch?
Danke :-)