2010-06-14 37 views
10

Bir C# uygulamasından bir sqllite db'ye bağlanmaya çalışıyorum. Daha önce SQLLite ile hiç çalışmadım.SQLite db dosyasına C# dan nasıl bağlanırım?

var connectionString = @"data source='C:\TestData\StressData.s3db'"; 
      connection = new SQLiteConnection(connectionString); 
      connection.Open(); 

i aşağıdaki özel durum alıyorum bağlantıyı açmaya:

System.NotSupportedException: The given path's format is not supported. 
    at System.Security.Util.StringExpressionSet.CanonicalizePath(String path, Boolean needFullPath) 
    at System.Security.Util.StringExpressionSet.CreateListFromExpressions(String[] str, Boolean needFullPath) 

yanlış yapıyorum?

Teşekkür ..

Nick

Güncelleme:

Ben 'veri kaynağı' 'DataSource' olarak değiştirildi bana önerildiği gibi. Şimdi yeni bir hata alıyor:

Bunu değiştirdikten sonra yeni bir hata alıyorum: System.ArgumentException: Veri Kaynağı boş olamaz. Kullan: bellek: bir bellek içi veritabanı açmak için System.Data.SQLite.SQLiteConnection.Open()

Başka önerileriniz var mı?

+1

Bağlantı dizginizdeki kesme noktalarını çıkarmayı deneyin DataSource parametresi: '@" DataSource = c: \ TestData \ StressData.s3db "'. –

cevap

13

DataSource Anladım olmalıdır

"data source=c:\TestData\StressData.s3db; Version=3;" 

'Version' özniteliği Görünüşe isteğe bağlı değil. .NET sağlayıcısının bunu tasarımcı özellik penceresinde göstermediği ilginç.

+2

Bir bağlantı dizesi oluşturmak için SQLiteConnectionStringBuilder nesnesini kullanmak (bir dizge olarak kodlamak yerine), bu gibi sorunların çoğunu ortadan kaldırır (belirsiz parametre) adlar, yazım hataları). Sürüm özelliği söz konusu olduğunda, en azından SQLite’imin buna ihtiyacı yoktur. –

1

this göre, data source ..

+0

Doh! Bence haklısın. Bunu değiştirdikten sonra yeni bir hata alıyorum: System.ArgumentException: Veri Kaynağı boş olamaz. Kullan: bellek: System.Data.SQLite.SQLiteConnection.Open() adresindeki bir bellek veritabanını açmak için bir argüman vermek zorunda mıyım? – Nick

+0

@Nick, Bunu hiç kullanmadım, ancak belgelerden yeni çıkan argüman gibi 'yeni SQLiteConnection' ("DataSource = C: \ TestData \ StressData.s3db") 'olmalıdır. Neden çalışmadığını bilmiyorum: ' –

+1

' Veri kaynağı 'olması gerektiği gibi görünüyor – Nick

İlgili konular