c#查询语句,查询多列?

RayBreslin 2015-01-26 03:51:46
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()) 不存在此行?
为什么,请大神解答?如果不可以,还有什么方法吗?
...全文
221 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
for (int i = 0; i < k; i++) { MessageBox.Show(sdr[i].ToString()); //Res[i] = sdr[i].ToString(); } 改成 while (sdr.Read()) { MessageBox.Show(sdr[列名或者列索引].ToString()); }
於黾 2015-01-26
  • 打赏
  • 举报
回复
OleDbDataReader 是一行一行的读取数据的, 必须执行sdr.Read()方法去读取下一行 它有返回值,如果返回true,就是有下一行,如果返回false,表示已经到结尾了,没有下一行
江南小鱼 2015-01-26
  • 打赏
  • 举报
回复
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());
}
             }
  • 打赏
  • 举报
回复
sdr 没有读取出来数据,导致sdr[k] 没有值。
於黾 2015-01-26
  • 打赏
  • 举报
回复
while(sdr.Read())

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧