PDA

View Full Version : open نشدن کانکشن بعد از ایجاد فایل دیتابیس در SQLite



kfaghih
چهارشنبه 08 شهریور 1396, 18:25 عصر
با سلام من با استفاده از wpf یک برنامه نوشتم که از دیتابیس sqlite استفاده می کنه و برای جلوگیری از خطا در ابتدای اجرای برنامه چک می کنم که اگر فایل دیتابس وجود نداشت اون رو بسازه و سپس اگر جدول وجود نداشت اون ذرو هم بسازه و اما مشکلی که دارم اینه که اگر فایل دیتابیس وجود نداشته باشه و خود برنامه اون رو بسازه در ادامه که connection مزبوط به اون دیتابیس رو می سازم و می خوام اون رو open کنم با این ارور مواجه می شم unable to open database file در صورتی که فایل دیتابیس رو می سازه و اگر یک باز برنامه رو ببندم و دوباره اجرا کنم به درستی اجرا می شه. یعنی در واقع برنامه همون موقع متوجه ساحت فایل دیتابیس نمی شه . کدم هم اینه

SQLiteConnection con;
SQLiteCommand cmd;
SQLiteDataReader read;



if (!File.Exists(db file path))
{
File.Create(db file path );


con = Tools.Con(db file path);

con.Open();
cmd = new SQLiteCommand("create table if not exists DB_Directory (ID Integer , Directory text)", con);
cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("Success");
}




else
{
con = Tools.Con(Tools.FirstDB_Path);

con.Open();
cmd = new SQLiteCommand("create table if not exists DB_Directory (ID Integer , Directory text)", con);
cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("Success else");










این هم کد مربوط به connection در کلاس Tools


public static SQLiteConnection Con(string DataSource) {
var constring = new SQLiteConnectionStringBuilder()
{

DataSource = DataSource,
Version = 3,
ReadOnly = false,

}.ToString();
return new SQLiteConnection(constring);
}



ممنون می شم من رو راهنمایی کنید .

Mahmoud.Afrad
پنج شنبه 09 شهریور 1396, 06:25 صبح
متد File.Create یک FileStream میسازد که تا باز هست نمیتونید کانکشن را open کنید. یا قبل از open کردن، فایل استریم را ببندید یا از طریق زیر فایل را ایجاد کنید
SQLiteConnection.CreateFile(db file path);