OracleDataReader dr = com.ExecuteReader();
FileStream File = new FileStream("D:\\log.txt", FileMode.Open, FileAccess.ReadWrite);
StreamWriter sw = new StreamWriter(File);
while(dr.Read())
{
string a = dr.GetString(1);
string b = dr.GetString(2);
DateTime c = dr.GetDateTime(3);
string d = dr.GetString(4);
string x = dr.GetString(5);
string f = dr.GetString(6);
string g = dr.GetString(7);
string h = dr.GetString(8);
string i = dr.GetString(9);
DateTime j = dr.GetDateTime(10);
int k = dr.GetInt32(11);
string l = dr.GetString(12);
sw.WriteLine(a + "," + b + "," + c + "," + d + "," + x + "," + f + "," + g + "," + h + "," + i + "," + j + "," + k + "," + l);
}
sw.Flush();
sw.Close();
File.Close();
每次表读完最后一行 显示没有可用的数据用于行或列,我想让它while循环输出完成之后弹出对话框 显示输出完成、在线等啊
------解决思路----------------------
这个你还是在上面加断点调试吧……看到底哪里出问题跳出了
------解决思路----------------------

和MessageBox无关,你这个肯定数据读取的问题
------解决思路----------------------
那你先將查询语句在分析器里面执行, 看下 X 对应的行, 有什么特别先.
或者將指定索引输出改为直接指定字段名来输出, 看下还会不会出现错误了.
DateTime a = ((dr["a"]) == DBNull.Value) ? DateTime.MinValue : Convert.ToDateTime(dr["a"]);
string b = dr["b"].ToString();
int c = ((dr["c"]) == DBNull.Value) ? 0 : Convert.ToInt32(dr["c"]);
------解决思路----------------------
这变量名让你起的稀碎
用个for循环不就得了,还一个一个的去取值啊
------解决思路----------------------
你数据库里到底有几列,总该知道吧
序号是从0开始的.
如果你有12列,那么应该从0开始,到11结束
不要写string l = dr.GetString(12);这种东西,不溢出才怪
------解决思路----------------------
断点,一步一步跟,不要只会等它报出个错误.
你必须知道报错的时候代码是循环到第几次,那一行的数据是什么,才好进行分析