2013-08-02 59 views
0

我有一個DBF file,我可以使用Microsoft Visual FoxPro打開,我現在需要通過Visual Studio 2012C# lnauage數據添加到它。的OleDbConnection和OleDbCommand的 - 無效授權規範

我得到這個錯誤:Invalid authorization specification.

與此代碼:

DialogResult result = MessageBox.Show("Do you wish to submit?", "Potvrzení", MessageBoxButtons.YesNo); 

    if (result == DialogResult.Yes) 
    { 
     odcCON.Open(); 
     OleDbCommand odc = new OleDbCommand("INSERT INTO netpokl.DBF (Castka,Akce) values(@castka,@akce)"); 
     odc.Parameters.AddWithValue("@castka",textBox2.Text); 
     odc.Parameters.AddWithValue("@akce",test); 
     odc.ExecuteNonQuery(); 
     odcCON.Close(); 

    } 

的OleDbConnection是這樣的:

OleDbConnection odcCON = new OleDbConnection(" Provider=SQLOLEDB;Data Source=\\SERVER\\Transfer\netpokl.DBF"); 
+0

看起來您缺少連接字符串上的安全信息。類似這樣的「Persist Security Info = False;集成安全性=是」 –

+0

添加一個'User Id = XYZ'屬性。重新使用不適用於ole db的連接字符串後,我得到了同樣的錯誤。將'User = XYZ'更改爲'User Id = XYZ'固定它。您也可以決定使用Windows身份驗證,在這種情況下,您可以添加「集成安全性= SSPI」並刪除「用戶ID」屬性。 –

回答

1

讀/寫dBASE文件,你可以使用Microsoft Jet OLEDB提供者,其連接字符串如下所示:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\directory;Extended Properties=dBASE IV;User ID=Admin;Password= 

請注意,數據源是您的dbase文件所在的文件夾。 最後在查詢表名應該是文件名,不帶擴展名爲.dbf,像這樣:

INSERT INTO netpokl (Castka,Akce) values(@castka,@akce) 

你需要這份在64位應用程序工作,你可以使用Microsoft ACE OLEDB提供商(Microsoft Access Database Engine 2010 Redistributable

Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=dBASE IV;Data Source=c:\directory;