PDA

View Full Version : سوال: مشکل با دیتابیس



aliasqar67
چهارشنبه 19 بهمن 1390, 16:22 عصر
سلام
من می خوام یه برنامه بنویسم ک وقتی رو سیستم کاربر نصب میشه نیازی نباشه ک sql server رو سیستم کاربر نصب بشه و بانک هم کنار فایل اجرایی قرار بگیره . بهتره از چه دیتابیسی استفاده کنم . (یعنی دیتابیسی ک برای استفاده از اون نیاز ب نصب هیچ نرم افزاری (مثل sql) روی سیستم کاربر نباشه ) . اگه کسی می تونه راهنمایی کنه .با تشکر

SianiD
چهارشنبه 19 بهمن 1390, 16:35 عصر
شما نیازی نیست که SQL SERVER رو کامل نصب کنی میتونی فقط انجینش رو نصب کنی که وقت زیادی نمیگیره خیلی زود و راحت نصب میشه حجمی هم نداره

aliasqar67
چهارشنبه 19 بهمن 1390, 16:37 عصر
شما نیازی نیست که SQL SERVER رو کامل نصب کنی میتونی فقط انجینش رو نصب کنی که وقت زیادی نمیگیره خیلی زود و راحت نصب میشه حجمی هم نداره

آخه می دونی چرا ؟ چون ممکنه کاربری ک از این برنامه استفاده می کنه هیچ دانشی نسبت به دیتابیس نداشته باشه . من تا حالا این کارو انجام ندادم یعنی میشه جوری درست کرد ک نیازی به اتچ کردن دیتابیس نباشه . ممنونم ازت

mhsmity
چهارشنبه 19 بهمن 1390, 17:13 عصر
سلام من یه بار می خواسم یه برنامه بنویسم که حرف حدیث نداشته باشه
خیلی راحت و واضح بگم حتی داخل Safe Mode هم قابل اجرا باشه
رفتم سراغ ویزوال بیسیک 6

shadi khanum
چهارشنبه 19 بهمن 1390, 22:04 عصر
اگه حتما میخوای که هیچی رو سیستم مشتری نصب نکنی میتونی از Access استفاده کنی یا فایل یا ساختار XML.. ولی همونطور که یکی از دوستان گفتن اگه از SQL هم استفاده کنی صرفا سرویس SQL رو نصب کنی کافیه و حجمش هم گمه.. ضمنا از توی برنامه و با کدنویسی هم میتونی راحت دیتابیستون رو بهش attach کنید یا restore و نیاز نیست کاربر کاری انجام بده
موفق باشی

aliasqar67
چهارشنبه 19 بهمن 1390, 22:08 عصر
اگه حتما میخوای که هیچی رو سیستم مشتری نصب نکنی میتونی از Access استفاده کنی یا فایل یا ساختار XML.. ولی همونطور که یکی از دوستان گفتن اگه از SQL هم استفاده کنی صرفا سرویس SQL رو نصب کنی کافیه و حجمش هم گمه.. ضمنا از توی برنامه و با کدنویسی هم میتونی راحت دیتابیستون رو بهش attach کنید یا restore و نیاز نیست کاربر کاری انجام بده
موفق باشی
مرسی از اینکه همیشه به بهترین نحو پاسخ سوالات منو می دید.و ببخشید از اینکه من ی کاربر تازه واردم و این همه سوال می کنم . در مورد روش آخری ک گفتید خیلی دوست دارم این کارو انجام بدم ولی هر چی گشتم یه راهنمای درست و حسابی پیدا نکردم میشه راهنمایی کنید . واقعا این قضیه فکرمو مشغول کرده ممنون میشم کمکم کنید .

دقیقا چه چیزی رو باید رو سیستم کاربر نصب کنم و دستورات اتچ کردن به چه صورتی باید باشه ؟

بی نهایت تشکر

shadi khanum
چهارشنبه 19 بهمن 1390, 22:15 عصر
ببین دوست من شما برو تو SQL تو help قسمت Index ، اگه میخوای backup دیتابیست رو به مشتری بدی بنویس RESTORE statement یا اگه فایل های mdf و Ldf رو به مشتری میخوای بدی بنویس attaching database files... خودش واستون یه سری Sample واسه نحوه نوشتن Sql Query واسه attach یا Restore رو بتون میده.. حالا تو برنامه نصبتون جایی که میخواید مثلا دیتابیس رو restore یا attach کنید commandtext شی commandتون رو بذارید اون دستور و command رو ExecuteQuery کنید... با اینکار از طریق برناتون دیتابیس رو رو سیستم مشتری راه میندازید..

gsearch
چهارشنبه 19 بهمن 1390, 23:33 عصر
اگه دیتابیس تون ساده و سبکه، می تونی از SQLite (http://www.sqlite.org/)استفاده کنی.

aliasqar67
چهارشنبه 19 بهمن 1390, 23:37 عصر
اگه دیتابیس تون ساده و سبکه، می تونی از SQLite (http://www.sqlite.org/)استفاده کنی.

sqlite امکان رمز گذاری روی دیتابیس نداره . این جالب نیست .
برای استفاده از sql server شما راهی دارید ؟ دوستان گفتند ک باید سرویس sql نصب بشه نمی دونم منظورشون از سرویس sql دقیقا چی هست ؟

shadi khanum
پنج شنبه 20 بهمن 1390, 00:00 صبح
دوستان گفتند که باید سرویس sql نصب بشه نمی دونم منظورشون از سرویس sql دقیقا چی هست ؟
ببین دوست عزیز اگه بخوام خیلی ساده و سطحی بگم SQL یه سرویس و واسه کار کردن باهاش نیازی به management نداره. ببین مثلا اگه الان شما SQL2008 رو سیستمتون نصب کرده باشید، یه management داره که میرین توش و به سرورتون وصل میشید و مثلا دیتابیس هاتون رو Browse میکنید و ... این نرم افزار که شما باهاش کار میکنی managment اس کیو ال و نصبش هم زمانبر و شاید سخت باشه واسه کاربر.. ولی اگه برید تو Services کنترل پنلتون میبینید یه سرویس اونجا هست به اسم Sql Server که در واقع سرویس و engine اس کیو ال که شما با managementتون بهش connect میشید(همون پنجره ای هست که موقع connect شدن به sql میاد و شما مثلا تو کمبوی بالا Database Engine رو انتخاب میکنی) ... واسه مشتری همون Service نصب بشه کافیه و management نمیخواد ..
موفق باشی

zarrinnegar
پنج شنبه 20 بهمن 1390, 00:04 صبح
چقدر پیچیده فکر میکنید

برای برنامه یک setup بسازید و توش همه چی رو ست کنید
شما فکر میکنید فقط مشکل دیتابیسه؟
اگر دات نت رو نداشت چی ؟
اگر viewer ریپورتتون رو نداشت چی ؟
اگر dll ابزارتون رو نداشت چی؟
و همه این اگر ها با setup حل میشه
به کاربر میگید مراحل setup رو دنبال کنه و برنامه نصب میشه و استفاده میشه

برای ساخت setup هم مراحل رو توی این تاپیک (http://barnamenevis.org/showthread.php?317302-%DA%A9%D8%A7%D8%B1-%D8%A8%D8%A7-%D8%A8%D8%A7%D9%86%DA%A9-%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA%DB%8C&p=1392248&viewfull=1#post1392248) گذاشتم

aliasqar67
پنج شنبه 20 بهمن 1390, 00:07 صبح
ببین دوست عزیز اگه بخوام خیلی ساده و سطحی بگم SQL یه سرویس و واسه کار کردن باهاش نیازی به management نداره. ببین مثلا اگه الان شما SQL2008 رو سیستمتون نصب کرده باشید، یه management داره که میرین توش و به سرورتون وصل میشید و مثلا دیتابیس هاتون رو Browse میکنید و ... این نرم افزار که شما باهاش کار میکنی managment اس کیو ال و نصبش هم زمانبر و شاید سخت باشه واسه کاربر.. ولی اگه برید تو Services کنترل پنلتون میبینید یه سرویس اونجا هست به اسم Sql Server که در واقع سرویس و engine اس کیو ال که شما با managementتون بهش connect میشید(همون پنجره ای هست که موقع connect شدن به sql میاد و شما مثلا تو کمبوی بالا Database Engine رو انتخاب میکنی) ... واسه مشتری همون Service نصب بشه کافیه و management نمیخواد ..
موفق باشی

ممنونم از اینکه پاسخ میدید . درسته ولی تو قسمت prerequisites در هنگام ایجاد setup چنین سرویسی وجود نداره چ جوری میشه اضافه کرد . با تشکر

Chris_Ronaldo
پنج شنبه 20 بهمن 1390, 07:47 صبح
قبلا اين مورد يه جايي بحث شده بود

توي خود گوگل بزنيد ميتونيد پيدا کنيد

به راحتي ميشه هنگام نصب برنامه همون SQL Engine را هم نصب کرد و از ديتابيس بدون هيچ تنظيمي استفاده کرد.

الان يادم نمياد کجا ديدم اما امکانش هست.

براي پشتيبان گيري و بازيابي هم ميشه از داخل برنامه اقدام کرد.

اما پيشنهاد من براي برنامه هايي که ديتاي زياد ندارند همان هست که جناب gsearch پاسخ داده بودند.

gsearch
پنج شنبه 20 بهمن 1390, 18:14 عصر
sqlite امکان رمز گذاری روی دیتابیس نداره . این جالب نیست .

دوست عزیز، در sqlite هم شما می تونید رو فایل دیتابیس پسورد بذاری
SQLiteConnection connection = new SQLiteConnection("Data Source=databasename.db3");
connection.Open();
connection.ChangePassword("password");

و برای باز کردن کانکشتن دیتا بیس رمز شده هم:
SQLiteConnection connection = new SQLiteConnection("Data Source=databasename.db3;Password=password");
connection.Open();

aliasqar67
جمعه 21 بهمن 1390, 16:06 عصر
دوست عزیز، در sqlite هم شما می تونید رو فایل دیتابیس پسورد بذاری


قبلا این کارو انجام دادم ولی جواب نمیده . یعنی بانک رمزگذاری میشه ولی نمی دونم چرا با سی شارپ باز نمیشه .
connectionstring = "Data Source=bank.db3;Version=3;Password=pass;New=False; Compress=True;";

gsearch
جمعه 21 بهمن 1390, 17:09 عصر
این کد رو امتحان کن،
یه دیتابیس ایجاد میکنه، بعد یه تیبل کوچیک و یه داده بهش اضافه می کنه و با یک کوئری بازیابیش می کنه.
فقط برای تست.

private void testwork(object sender, EventArgs e)
{
//createSecureDB();
int retVal = ExecuteNonQuery("CREATE TABLE [sample] ([id] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,[name] NVARCHAR(50) NULL)");

retVal = ExecuteNonQuery("INSERT INTO sample values(null,'farzad')");

string name = ExecuteScalar("SELECT name FROM sample WHERE id = 1");
MessageBox.Show(name);
}

private void createSecureDB()
{
SQLiteConnection connection = new SQLiteConnection("Data Source=tmp.db3");
connection.Open();
connection.ChangePassword("123456");
connection.Close();
}

string conString = "Data Source=tmp.db3;Password=123456";

public DataTable ExecuteReader(string sql)
{
DataTable tbl = new DataTable();

SQLiteConnection connection = new SQLiteConnection(conString);
connection.Open();

SQLiteCommand mycommand = new SQLiteCommand(connection);
mycommand.CommandText = sql;
SQLiteDataReader reader = mycommand.ExecuteReader();
tbl.Load(reader);
reader.Close();

connection.Close();
return tbl;
}

public int ExecuteNonQuery(string sql)
{
SQLiteConnection connection = new SQLiteConnection(conString);
connection.Open();

SQLiteCommand mycommand = new SQLiteCommand(connection);
mycommand.CommandText = sql;
int rowsUpdated = mycommand.ExecuteNonQuery();

connection.Close();
return rowsUpdated;
}

public string ExecuteScalar(string sql)
{
SQLiteConnection connection = new SQLiteConnection(conString);
connection.Open();

SQLiteCommand mycommand = new SQLiteCommand(connection);
mycommand.CommandText = sql;
object value = mycommand.ExecuteScalar();

connection.Close();
return value.ToString();
}

aliasqar67
یک شنبه 23 بهمن 1390, 12:08 عصر
از همه دوستان ممنونم . مشکلم با sqlite برطرف شد . مشکل این بود ک از ی رفرنس قدیمی استفاده می کردم و ب این خاطر دیتابیس رمزگذاری شده باز نمی شد . از همه ممنونم