string strCnn = "Provider=msdaora; Data Source = OracleDB; User Id = 'ls'; Password = p19831016; Integrated Security = no;"; 
OleDbConnection cnn = new OleDbConnection(strCnn); try
{
         cnn.Open(); string strSql = "Select * From table1";
OleDbCommand cmm = new OleDbCommand(strSql, cnn);
OleDbDataAdapter ad = new OleDbDataAdapter(cmm);

OleDbDataReader reader = cmm.ExecuteReader(System.Data.CommandBehavior.KeyInfo);
DataTable dt = reader.GetSchemaTable();
DataSet ds = new DataSet();
ds.Tables.Add(dt); ds.WriteXml(xmlpath);
}
catch (Exception e)
{
Console.Write(e.Message);
Console.Read();
}
finally
{
cnn.Close();
}同样的代码,用OracleClient可运行成功,
但用OleDB出错,在cnn.Open()处出现异常:多步OLE DB操作产生错误。如果可能,请检查每个OLE DB的状态值。没有工作被完成。
什么原因?

解决方案 »

  1.   

    oracle8不同数据库实例之间的连接好像是有事务方面的问题,好像oracle已经出过这样的补丁,不过不知道是哪一个。
    好像使用microsoft的ado数据驱动程序,不使用oracle的oledb驱动程序就没有问题;
      

  2.   

    oracle不同版本之间好像也不同吧,还是用oracleclient吧,我一直用它没问题
      

  3.   

    恩 建议用OracleClient 来连接
      

  4.   

    string strCnn = "Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID=system;Password=yourPWD;Data Source=OracleDB;Extended Properties=";
    试试看
      

  5.   

    多谢: egxsun() 
    连接成功了。