none
Veritabanı yardım RRS feed

  • Soru

  • Merhaba Üstadlar,

    Projemde bir adet Sqlite veritabanı kullanıyorum.Db dosyası Resources klasöründe tutmaktayım.

    Herşey çok güzel gidiyordu, program çok iyi çalışıyordu kendi bilgisayarımda kayıt da ekliyordu lakin

    ne zaman setup yapıp başka pc'de kurunca sql komutları çalışmıyor yazma izni yok diyor vs.

    Yardımcı olabilirseniz çok minnettar kalırım

    4 Mayıs 2016 Çarşamba 13:24

Yanıtlar

  • Nedeni son derece basit. Program kuruldugunda, buyuk bir ihtimalle "Program Files" altina kurulmustur. Bu dizin, alt dizinleriyle birlikte, sadece okunabilir bir yer. Data dosyalarini oraya koyma, "appdata" altina koy.

    Console.WriteLine( Environment.GetFolderPath  (Environment.SpecialFolder.ApplicationData) );
    Console.WriteLine( Environment.GetFolderPath  (Environment.SpecialFolder.CommonApplicationData) );
    Console.WriteLine( Environment.GetFolderPath  (Environment.SpecialFolder.LocalApplicationData) );
    

    4 Mayıs 2016 Çarşamba 14:05
    Yanıtlayıcı

Tüm Yanıtlar

  • Nedeni son derece basit. Program kuruldugunda, buyuk bir ihtimalle "Program Files" altina kurulmustur. Bu dizin, alt dizinleriyle birlikte, sadece okunabilir bir yer. Data dosyalarini oraya koyma, "appdata" altina koy.

    Console.WriteLine( Environment.GetFolderPath  (Environment.SpecialFolder.ApplicationData) );
    Console.WriteLine( Environment.GetFolderPath  (Environment.SpecialFolder.CommonApplicationData) );
    Console.WriteLine( Environment.GetFolderPath  (Environment.SpecialFolder.LocalApplicationData) );
    

    4 Mayıs 2016 Çarşamba 14:05
    Yanıtlayıcı
  • Nedeni son derece basit. Program kuruldugunda, buyuk bir ihtimalle "Program Files" altina kurulmustur. Bu dizin, alt dizinleriyle birlikte, sadece okunabilir bir yer. Data dosyalarini oraya koyma, "appdata" altina koy.

    Console.WriteLine( Environment.GetFolderPath  (Environment.SpecialFolder.ApplicationData) );
    Console.WriteLine( Environment.GetFolderPath  (Environment.SpecialFolder.CommonApplicationData) );
    Console.WriteLine( Environment.GetFolderPath  (Environment.SpecialFolder.LocalApplicationData) );

    Hocam çok teşekkür ediyorum iyiki varsınız sizi yakından takip ediyorum :)

    Projemde Sqlite kullanıyorum ve dosyam Resources klasöründe db.s3db adlı bir dosya.

    Nasıl bir yol izlemem gerektiğini biraz daha açık yazarmısınız hocam zahmet olmassa çünki daha önce böyle birşey yaşamadım.

    Çok minnettarım size hocam,sağolun.

    4 Mayıs 2016 Çarşamba 15:22
  • Cok acik aslinda :) Yukaridaki yerlerden birisini kullan data dosyan icin. Ornegin:

    void Main()
    {
       //var conn =  new SQLiteConnection(@"Data Source="+DataLoc.DataPath);	
    }
    
    public class DataLoc
    {
    	public static string DataPath
    	{
    		get
    		{
    			return GetDataPath();
    		}
    	}
    	private static string GetDataPath()
    	{
    		string programId = "848189c1-76ea-43b8-94eb-6309f0f6e4f7";
    		string dataPath = Path.Combine(
    			Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData),
    			programId);
    		string dbPath = Path.Combine(dataPath, "db.s3db");
    
    		if (!Directory.Exists(dataPath))
    		{
    			Directory.CreateDirectory(dataPath);
    
    			// varsa db.s3db'yi kopyala
    			string orijinalDb = @"resources\db.s3db";
    			File.Copy(orijinalDb, dbPath);
    			File.SetAttributes(dbPath, FileAttributes.Normal);
    		}
    		return dbPath;
    	}
    }
    
    
    

    5 Mayıs 2016 Perşembe 14:18
    Yanıtlayıcı
  • Cok acik aslinda :) Yukaridaki yerlerden birisini kullan data dosyan icin. Ornegin:

    void Main()
    {
       //var conn =  new SQLiteConnection(@"Data Source="+DataLoc.DataPath);	
    }
    
    public class DataLoc
    {
    	public static string DataPath
    	{
    		get
    		{
    			return GetDataPath();
    		}
    	}
    	private static string GetDataPath()
    	{
    		string programId = "848189c1-76ea-43b8-94eb-6309f0f6e4f7";
    		string dataPath = Path.Combine(
    			Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData),
    			programId);
    		string dbPath = Path.Combine(dataPath, "db.s3db");
    
    		if (!Directory.Exists(dataPath))
    		{
    			Directory.CreateDirectory(dataPath);
    
    			// varsa db.s3db'yi kopyala
    			string orijinalDb = @"resources\db.s3db";
    			File.Copy(orijinalDb, dbPath);
    			File.SetAttributes(dbPath, FileAttributes.Normal);
    		}
    		return dbPath;
    	}
    }
    
    

    Hocam verdiğniz kodu eksiksiz bir şekilde kullandım fakat bir hata verdi.

    Bu hatayı ben db.s3db database dosyasına Copy to Output'u copy if newer yaptıktan sonra düzeliyordu.Lakin burda yolunu belirtiyoruz lakin hata veriyor.Nasıl düzeltebilirim hocam ?

    Çok teşekkür ederim

    6 Mayıs 2016 Cuma 18:43
  • Verdigi, kodla ilgisi yok. Isletme tablosunu yaratmamissin. Orijinal db.s3db'de var ise, onu kopyala.
    7 Mayıs 2016 Cumartesi 10:32
    Yanıtlayıcı
  • Var hocam, hepsi var load olayında isletme gridi yüklendiği için ilk orda hata veriyor.Acaba neden oluyor hocam ?
    7 Mayıs 2016 Cumartesi 18:09