2013-06-08 2 views
0

.cf # wpf를 통해 .dbf를 열고 ListView에로드하려고하는데 행운이 없습니다. 내 뷰 모델에서어떻게 목록 뷰를 .dbf로 채울 수 있습니까

는 :

public void DBF() 
    { 
     var databasePath = @"C:\Users\jesson\Desktop\FLCOLU_Building_Outline_Hints_308EL_section3_2180ER_QC.dbf"; 
     var connectionString = string.Format("DSN=dBase Files", databasePath); 
     OdbcConnection connection = new OdbcConnection(connectionString); 

     connection.Open(); 

     var _command = connection.CreateCommand(); 
     var query = string.Format(@"SELECT * FROM C:\Users\jesson\Desktop\FLCOLU_Building_Outline_Hints_308EL_section3_2180ER_QC.dbf"); 
     string commandText = query; 


     var _dataAdapter = new OdbcDataAdapter(commandText, connection); 

     DataSet _dataSet = new DataSet(); 
     DataTable _dataTable = new DataTable(); 

     _dataSet.Reset(); 
     _dataAdapter.Fill(_dataSet); 

     _dataTable = _dataSet.Tables[0]; 
     var rows = _dataTable.Rows; 

     string userName = rows[0].ItemArray[1] as string; 
     string password = rows[0].ItemArray[2] as string; 

     UserDataVar = new InputDataSingle 
     { 
      UserName = userName, 
      Password = password 
     }; 

     connection.Close(); 

    } 

내가 뭘 잘못 했습니까? 다른 아이디어?

+0

나는 DataTable에로드 할 수없는 행을 가져 오려고 시도하며 connection.Close()로 바로 이동합니다. – Jesson

+0

DataTable을 채울 수 있습니까? – JSJ

+0

예 .dbf – Jesson

답변

0

여기 있습니다. 아래에서 시도하십시오.

string filename= //yourfilePath; 
    string constr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+ filename +";Extended Properties=dBASE IV;User ID=Admin;Password=;"; 
DataTable dt = new DataTable(); 
using (OleDbConnection con = new OleDbConnection(constr)) 
       { 
        var sql = "select * from " + filename ; 
        OleDbCommand cmd = new OleDbCommand(sql, con); 
        con.Open(); 
        DataSet ds = new DataSet(); ; 
        OleDbDataAdapter da = new OleDbDataAdapter(cmd); 
        da.Fill(ds); 
dt =ds.Tables[0] 
       } 

여기 listview 또는 dataGrid에 데이터를 전달하는 방법.

mylistview.ItemsSource = dt.DefaultView; 

조건 당신이 당신의 ListView에 대한보기를 만들어야합니다 ;

+0

나는 그것을 시도했다. 그러나 나는 단지 나의 출력 창에서이 3 배를 얻었다. (System.Data.dll에서 'System.Data.OleDb.OleDbException'형식의 첫 번째 예외가 발생했습니다.) – Jesson

관련 문제