ilk şey bir bağlantı, uygulama yapılandırma dosyasında dize belirterek olmasıdır Bağlantı dizesini Program.exe.config'dan kullanarak, bunun yerine bağlantı dizesini kopyalayıp yapıştırabilirsiniz. Eğer biraz kodunuzu değiştirirseniz
, belki ne demek istediğimi görebilirsiniz:
//Get the connection string to use
String connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\School\Stage\Program testen\Program\bin\Debug\InventoryDB.accdb";
//Open a connection to the database
OleDbConnection con = new OleDbConnection(connectionString);
Ne uygulamanın yapılandırmasından bağlantı dizesini çekiyor yapıyor olmalı:
//Get our connection string setting, and the connectionString it contains
ConnectionStringSettings cs = ConfigurationManager.ConnectionStrings["Program.Properties.Settings.InventoryDBConnectionString"];
String connectionString = cs.ConnectionString;
//Open a connection to the database
OleDbConnection con = new OleDbConnection(connectionString);
yoktur yapabileceğiniz bir değişiklik daha. Kişisel bağlantı dizesi giriş kendisi kullanmak istediğiniz sağlayıcı belirtir:
providerName="System.Data.OleDb"
Ama sonra devam edebilir ve bu sağlayıcı kendiniz kullanın: Farklı bir sağlayıcı kullanmak üzere bağlantı dizesi değiştirdiyseniz
OleDbConnection con = new OleDbConnection(...);
:
providerName="System.Data.SqlClient"
kodunuzu hala OleDbConnection yerine aplikasyonla verilen sağlayıcısını kullanarak olacağını tion konfigürasyonu.
Neyse ki, .NET framework o için doğru sağlayıcı oluşturabilir kullanışlı küçük yardımcı işlevi vardır kullanarak: \ Okul \ Aşaması:
public static DbConnection GetConnection()
{
//Get the connection string info from our application config
ConnectionStringSettings cs = ConfigurationManager.ConnectionStrings["Program.Properties.Settings.InventoryDBConnectionString"];
if (cs == null)
throw new Exception("Could not find connection string settings");
//Get the factory for the given provider (e.g. "System.Data.OleDbClient")
DbProviderFactory factory = DbProviderFactories.GetFactory(cs.ProviderName);
if (factory == null)
throw new Exception("Could not obtain factory for provider \"" + cs.ProviderName + "\"");
//Have the factory give us the right connection object
DbConnection conn = factory.CreateConnection();
if (conn == null)
throw new Exception("Could not obtain connection from factory");
//Knowing the connection string, open the connection
conn.ConnectionString = cs.ConnectionString;
conn.Open();
return conn;
}
Eğer bu yolu 'Ge emin misiniz \ Program testen \ Program \ bin \ Debug' o PC'de? –
benim bilgisayarımda çalışır, ancak farklı bir dosyaya aktardığımda, THF pc üzerindeki konumu değiştirebilmem için program.exe.config dosyasını açtım ve çalıştırdığımda bir hata gösteriyor – Viktor
Tam olarak hangi hata gösteriliyor? Microsoft Access Runtime'in Microsoft Access'in hedef makinede yüklü olması (Erişim Veritabanını arka uç olarak kullandığınız göz önüne alındığında)? –