OleDbProvider,db2,E_FAIL(0x80004005)

时间:2016-07-08 05:11:06

标签: c# db2

在某些服务器中出现以下错误:

    location / {
         uwsgi_pass unix:/home/andrew/andrew-django-personal-site/personalsite/personalsite.sock;
         include /your_location/conf/uwsgi_params; // or your own
         uwsgi_modifier1 30;          // ignore extra if not used
         proxy_set_header HTTP_AUTHORIZATION $http_authorization; // only use if needed
         proxy_set_header  X-Real-IP  $remote_addr; // only use if needed
         proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;// only if needed
         proxy_set_header  Host $http_host; // only use if needed
         proxy_redirect  off;  // only use if needed
    }

GetData方法:

'IBMDADB2' failed with no error message available, 
      result code:    E_FAIL(0x80004005).     
   at System.Data.OleDb.OleDbDataReader.ProcessResults(OleDbHResult hr) 
   at System.Data.OleDb.OleDbDataReader.BuildSchemaTableRowset(Object handle) 
   at System.Data.OleDb.OleDbDataReader.GenerateSchemaTable(
     OleDbDataReader dataReader, Object handle, CommandBehavior behavior) 
   at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior
     behavior, String method) 
   at System.Data.OleDb.OleDbCommand.ExecuteReader(CommandBehavior behavior) 
   at System.Data.OleDb.OleDbCommand.System.Data.IDbCommand.ExecuteReader(
     CommandBehavior behavior) 
   at System.Data.Common.DbDataAdapter.FillSchemaInternal(DataSet dataset, 
     DataTable datatable, SchemaType schemaType, IDbCommand command,
     String srcTable, CommandBehavior behavior) at 
     System.Data.Common.DbDataAdapter.FillSchema(DataSet dataSet,
     SchemaType schemaType, IDbCommand command, String srcTable, CommandBehavior behavior) 
     at System.Data.Common.DbDataAdapter.FillSchema(DataSet dataSet,
     SchemaType schemaType) 
     at BusinessLogiс.DB2.Database.GetData(String query, 
     String database, String host, String port, String login, String password)

的connectionString:

public static DataTable GetData(string query, string database,
             string host, string port, string login, string password)
    {
        OleDbConnection connection = null;
        try
        {
            connection = Connection.GetConnection(database, host, port, login, password);
            OleDbDataAdapter dataAdapter = new OleDbDataAdapter(query, connection);
            DataSet dataSet = new DataSet();
            dataAdapter.FillSchema(dataSet, SchemaType.Mapped);
            dataAdapter.Fill(dataSet);

            return dataSet.Tables[0];
        }
        finally 
        {
            Connection.CloseConnection(connection);
        }
    }

2 个答案:

答案 0 :(得分:0)

别忘了打开联系。

如果您只想查询和更新数据库,则不需要FillSchema。

你可以在ADO.NET中使用idb2connexion,idb2dataadapter,它更好

Example here

答案 1 :(得分:0)

我删除了一行

dataAdapter.FillSchema(dataSet, SchemaType.Mapped);