c#查询语句,查询多列?该如何解决

c#查询语句,查询多列?
public static string[] MDBMutiSelect(string Address, string TableName, string KeyColNam, string KeyColValue, string[] TargetColName)
        {
            int k = TargetColName.Count();
            string[] Res=new string[TargetColName.Count()];
            OleDbConnection conn;
            conn = new OleDbConnection("Provider=Microsoft.Jet.oledb.4.0;Data Source=" + Address + ";Jet Oledb:Engine Type=5");
            conn.Open();
            //注意空格!!!!!!
            string TARGETCOLUNAME=null;
            for (int i = 0; i < k;i++ )
            {
                if (i < k - 1)
                {
                    TARGETCOLUNAME += TargetColName[i] + ",";
                }
                else
                {
                    TARGETCOLUNAME += TargetColName[i];
                }
            }

            OleDbCommand cmd = new OleDbCommand("select " + TARGETCOLUNAME + " from " + TableName + " where " + KeyColNam + " = '" + KeyColValue + "'", conn);

            cmd.CommandType = CommandType.Text;
            OleDbDataReader sdr = cmd.ExecuteReader();

            for (int i = 0; i < k; i++)
            {
                MessageBox.Show(sdr[i].ToString());
                //Res[i] = sdr[i].ToString();
            }
            conn.Close();
            return Res;
        }

调试cmd显示sql为select sssbbb1,sssbbb2 from firsttable11 where sssbbb0 = '三等份';
但是,错误总说,MessageBox.Show(sdr[i].ToString()) 不存在此行?
为什么,请大神解答?如果不可以,还有什么方法吗?
------解决思路----------------------
OleDbDataReader sdr = cmd.ExecuteReader();
都木有读,sdr[0]是null

改成

while (sdr.Read())
             {
for (int i = 0; i < k; i++)
             {
                 MessageBox.Show(sdr[i] == DBNull.Value?String.Empty:sdr[i].ToString());
}
             }

------解决思路----------------------
OleDbDataReader 是一行一行的读取数据的,
必须执行sdr.Read()方法去读取下一行
它有返回值,如果返回true,就是有下一行,如果返回false,表示已经到结尾了,没有下一行