2014-07-16 76 views
0

我想在c#中为oracle数据库中的sql请求创建一个通用函数。
我想将所有列保存为字符串。我试图使用reader.GetString()方法,但引发异常,说它是不可转换的...
我该如何做一个功能呢?
string [] request (OracleConnection con, String Table, String condition, String columns, String sort){ //The magic code return "A string-array with all information"; }从Oracle数据库请求中获取所有数据

回答

0

你可以在DBReader上使用Item属性吗?此外,这种方法是一个严重的安全风险 - 使用条件字符串而不是params邀请sql注入。

public string[] Request(IDBConnection conn, string table, string condition, string columns, string sort) 
    { 
     List<string> output = new List<string>(); 
     string[] cols = columns.Split(','); 
     string sql = string.Format("select * from {0} etc", table); 
     using (IDBCommand cmd = new OracleCommand(conn, sql)) 
     { 
      conn.Open(); 
      IDBReader reader = cmd.ExecuteReader(); 
      while (reader.Read()) 
      { 
       foreach (string col in cols) 
       { 
        object field = reader.Item[col]; 
        output.Add(field.ToString()); 
       } 
      } 
     } 
     return output.ToArray(); 
    }