PDA

View Full Version : مبتدی: مشکل با انتقال دیتبایس در C#



acreza
سه شنبه 04 مهر 1391, 10:21 صبح
سلام
من از SQlite 3 در پروژه خودم ویژوال 2010 برنامه C# استفاده میکنم توی رفرنس در Solution Explorer هم Dll آنرا قرار دادم و خاصیت Copy local اش را هم True کرده ام ولی وقتی پروژه Build شده را به یه سیستم دیگه میبرم هنگام اتصال به دیتابیس خطای زیر را میده :
Could not Load File or assembely 'System.Data.Sqlite.Dll" or ...
باید چی کار کرد ؟

morteza271
سه شنبه 04 مهر 1391, 10:30 صبح
سلام.
خود Sqlite رو روی سیستم طرف نصب کردین؟

acreza
سه شنبه 04 مهر 1391, 10:43 صبح
نه !! نمیخواهیم خود طرف نصبش کنه فقط یک Dll هستش که باید کپی شه

morteza271
سه شنبه 04 مهر 1391, 10:48 صبح
باید روی سیستم طرف هم sqlite رو نصب کنین!
علاوه بر اینکه dll رو میذارین باید خود sqlite هم نصب بشه.
مثل sql که باید حداقل Engine رو نصب کنین تا بتونین به دیتابیس وصل بشین.

acreza
سه شنبه 04 مهر 1391, 10:57 صبح
نه اینطور نیست . اصلا من برای همین Sqlite را انتخاب کردم فقط نمیدانم چطوری و کجا باید dll کپی بشه

morteza271
سه شنبه 04 مهر 1391, 11:04 صبح
هرجور راحتین!
اگه تونستین راهی پیدا کنین ممنون میشم واسه منم به صورت پیام خصوصی بفرستین و اینجا هم بذارین تا بقیه دوستان استفاده کنن.
موفق باشید.

acreza
سه شنبه 04 مهر 1391, 11:13 صبح
ببین دوست عزیز در سایت خودش
http://system.data.sqlite.org/index.html/doc/trunk/www/faq.wiki#q8

شماره 9 را بخوان
(9) How do I install System.Data.SQLite on end-user machines?
Strictly speaking, there is no need to install System.Data.SQLite on any end-user machine (e.g. via the setup). The recommended way to deploy the assemblies is "application local" (i.e. copy them to the directory the application is installed to). Installing the assemblies into the Global Assembly Cache is not recommended as it may cause conflicts with other applications installed on the machine.


کمک لطفا !!!

Hajivandian
سه شنبه 04 مهر 1391, 11:31 صبح
سلام،
حق با acreza است.
Sqlite نیازی به نصب نداره چون ServerLess هستش. اما در مورد اروری که میده: لطفا یه تصویر از فایل های پروژه Build شده ات بزار تا فایل هاش رو یه نگاه کنم ببینم چیزی کم نداشته باشه.

morteza271
سه شنبه 04 مهر 1391, 11:38 صبح
راستش من قبلا یه نفر که دو سال بود با Sqlite کار کرده بود پرسیده بودم و گفت که باید نصب بشه و منم نصبش کردم و مشکلم برطرف شد! من به این خاطر این جواب رو دادم!
اما حالا که توی سایت ها گشتم وبیشتر بررسی کردم دیدم حق با شماست، من واقعا متاسفم و ازتون عذرخواهی میکنم!
ولی منم خیلی دوست دارم بدونم چجوری میشه این کار رو کرد. امیدوارم به جواب برسیم...

SharpSabre
سه شنبه 04 مهر 1391, 12:16 عصر
Microsoft Visual C++ 2010 SP1 Redistributable Package (x86) (http://www.microsoft.com/en-us/download/details.aspx?id=8328)

این رو باید کاربر نصب کرده باشه
از ورژن 32 بیتی Sqlite3 استفاده کنید . و برنامه رو هم همین طور .

acreza
سه شنبه 04 مهر 1391, 12:48 عصر
دقیقا از 32 بیتی Sqlite3 واسه دات نت 4 استفاده کرده ام93238

توی شاخه Debug هم بعد از Build کردن این فایل ها هستش :
System.Data.SQLite.dll : برای SQlite
Interop.ShockwaveFlashObjects : برای اجرای فلش
im.vshost.exe.manifest
im.vshost.exe
im.pdb
im.exe برنامه اصلی
database.db : فایل دیتابیس
data : یک شاخه که فایلهای فلش برای اجرا هستش
AxInterop.ShockwaveFlashObjects.dll


وقتی sqlite را نصب کنم روی سیستم طرف درست اجرا میشه حتی اگر لز لیست برنامه ها آن اینستالش هم بکنم برنامه درست کار میده ولی تاقبل از نصب نه !

SharpSabre
سه شنبه 04 مهر 1391, 12:54 عصر
فقط Microsoft Visual C++‎ 2010 SP1 Redistributable Package (x86) (http://www.microsoft.com/en-us/download/details.aspx?id=8328)

Hajivandian
سه شنبه 04 مهر 1391, 13:13 عصر
توی شاخه Debug هم بعد از Build کردن این فایل ها هستش :
System.Data.SQLite.dll : برای SQlite

برای SQlite تنها اون فایل کافی نیست، دو فایل دیگه هم هست که وجود SQLite.Interop.dll از بین اون دو تا فایل در کنار برنامه ات ضروریه؛ فایل ها رو برات ضمیمه کردم من خودم با استفاده از اینا مشکلی نداشتم.

acreza
سه شنبه 04 مهر 1391, 13:52 عصر
تشکر این فایل را قبلا امتحان کردم وقتی توی رفرنس هام میخواهم اضافه کنم این خطا را میده : این فایل شمارا هم که میخواهم اضافه کنم همینطوری میشه
---------------------------
Microsoft Visual Studio
---------------------------
A reference to 'D:\Users\shahidi\Documents\Visual Studio 2010\Projects\im\im\library\SQLite.Interop.dll' could not be added. Please make sure that the file is accessible, and that it is a valid assembly or COM component.
---------------------------
OK
---------------------------

دستی هم که کپی میکنم توی شاخه DEbug تاثیری نداره

acreza
سه شنبه 04 مهر 1391, 13:53 عصر
فقط Microsoft Visual C++‎ 2010 SP1 Redistributable Package (x86) (http://www.microsoft.com/en-us/download/details.aspx?id=8328)

مرسی ولی ما میخواهیم نصب را به حداقل برسونیم .

Hajivandian
سه شنبه 04 مهر 1391, 14:02 عصر
تشکر این فایل را قبلا امتحان کردم وقتی توی رفرنس هام میخواهم اضافه کنم این خطا را میده : این فایل شمارا هم که میخواهم اضافه کنم همینطوری میشه
SQLite.Interop.dll این فایل رو نباید به رفرنسات اضافه کنی چون اصلا کد مدیریت شده نیست که بتونی اضافه کنی باید همون کنار فایل اجراییت باشه. این که میگی تأثیری نداشت نمیدونم دلیلش دقیقا چیه ولی من تو برنامه ای که تو لینک زیر نوشتم از همین پایگاه استفاده کردم و برای انتقالش مشکلی نداشتم.
http://barnamenevis.org/showthread.php?330885-(%D8%AC%D8%B3%D8%AA%D9%88-%D8%AC%D9%88%DB%8C-%D8%AA%D8%B5%D8%A7%D9%88%DB%8C%D8%B1-%D8%A8%D8%B1-%D8%A7%D8%B3%D8%A7%D8%B3-%D8%B1%D9%86%DA%AF-(-%D8%A2%D9%86%D8%A7%D9%84%DB%8C%D8%B2-%D8%B1%D9%86%DA%AF

SharpSabre
سه شنبه 04 مهر 1391, 14:09 عصر
مرسی ولی ما میخواهیم نصب را به حداقل برسونیم .
خوب دوست گرامی بزرگترین شرکت ها این برنامه رو با یک برنامه نصب کننده ادغام می کنند و بصورت سایلنت نصب می کنن ، کافیه شما با استفاده از یک Install Shield Wizard این کار رو بکتید و یا سورس اون فایلی که گفتم رو ببینید که این فایل ها کجا می شینه و کدوم قسمت رجیستری رو آباد می کنند .
در واقع اگر نصب نکنبد باید دستی توسط یک بچ فایل با رجیستری ویندوز کاربر صحبت کنید.

acreza
چهارشنبه 05 مهر 1391, 12:26 عصر
خوب دوست گرامی بزرگترین شرکت ها این برنامه رو با یک برنامه نصب کننده ادغام می کنند و بصورت سایلنت نصب می کنن ، کافیه شما با استفاده از یک Install Shield Wizard این کار رو بکتید و یا سورس اون فایلی که گفتم رو ببینید که این فایل ها کجا می شینه و کدوم قسمت رجیستری رو آباد می کنند .
در واقع اگر نصب نکنبد باید دستی توسط یک بچ فایل با رجیستری ویندوز کاربر صحبت کنید.


راستی توی سایتش نوشته داخل خودش اون C++ را داره :

This setup package features the mixed-mode assembly and will install all the necessary runtime components and dependencies for the x86 version of the System.Data.SQLite 1.0.82.0 (3.7.14) package. The Visual C++ 2010 SP1 runtime for x86 is included. The .NET Framework 4.0 is required.
This setup package is capable of installing the design-time components for Visual Studio 2010.
(sha1: bf3defd3b4250e1aa94ea06e10c4b369416d0e2a)

acreza
چهارشنبه 05 مهر 1391, 12:31 عصر
من هر کاری میکنم نمیشه که نمیشه . شاید مراحل کار را اشتباه میکنم میشه یکی دقیقا بگه کلا باید چی کار کرد ؟

توی آدرس زیر از همین سایت کلی فایل برای حالت های مختلف داره :
http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki


من اینو انتخاب میکنم چون دات نت 4 دارم
Setups for 32-bit Windows (.NET Framework 4.0)

و نصب میکنم و توی رفرنس دانت میارمش و بعدهم خروجی Debug را بعلاوه اون DLL ها برمیدارم

نکنه باید اینو انتخاب میکرد واسه دانلود ؟
Precompiled Binaries for 64-bit Windows (.NET Framework 4.0)
که نوشته Precompile
???

morteza271
چهارشنبه 05 مهر 1391, 12:40 عصر
سلام دوستان.
منم تمام مراحلی که دوستان گفتن رو انجام دادم ولی بازم نشد که نشد!!!
دوستانی که گفتین تونستن کمک کنن!

acreza
چهارشنبه 05 مهر 1391, 14:15 عصر
تویه سایتها برای اضافه کردن dll مربوطه گفته از روش زیر استفاده کنید اما من تو تب .net چنین dll ای ندارم بلکه میرم توی تب Brows و از یه مسیر D:\Program Files\System.Data.SQLite\2010\bin
این میارمش ( این همون مسیری هستش که وقتی sqlite را نصب میکنم خودش ایجادش میکنه و Dll ها را توش میگذاره بهدشم یه نکته ای یک فایل text.exe داره که اونهم دقیقا همون خطایی را میده که برنامه من بعد از انتقال رویه سیستم دیگه میده فکر کنم مال همین باشه الان امتحان میکنم و نتیجه را برای سایرین میگذارم که اگر کسی دیگه چنین مشکلی داشت ازش استفاده کنه

Getting Started

Referencing System.Data.SQLite
After you have installed the .NET provider for SQLite, you need to make sure that your project can access the required .dll. In Visual Studio 2008, this can be done by selecting "Project -> Add Reference..." from the main menu bar. A window will pop up, and under the ".NET" tab, scroll down and find System.Data.SQLite.
http://bastan-co.com/a/browse.php?u=Oi8vd3d3LmRyZWFtaW5jb2RlLm5ldC9mb3J1b XMvdXBsb2Fkcy9tb250aGx5XzAyXzIwMTAvcG9zdC0yNDAyNTc tMTI2Njk0NjY1MTIxMDgucG5n&b=13
Select it and click ok. It is now referenced in your project. The last thing we need to do is make sure Visual Studio copies the .dll for System.Data.SQLite to the project folder, which is necessary for SQLite to work without the provider. If the Solution Explorer window is not currently visible, open it by selecting "View -> Solution Explorer" from the main menu bar. Under the current project, click the + sign next to References to see a list of all currently referenced libraries.
http://bastan-co.com/a/browse.php?u=Oi8vd3d3LmRyZWFtaW5jb2RlLm5ldC9mb3J1b XMvdXBsb2Fkcy9tb250aGx5XzAyXzIwMTAvcG9zdC0yNDAyNTc tMTI2Njk0Njg2MTUwOTEucG5n&b=13
Right click the reference to System.Data.SQLite, and select "Properties". Set the property "Copy Local" to true.
http://bastan-co.com/a/browse.php?u=Oi8vd3d3LmRyZWFtaW5jb2RlLm5ldC9mb3J1b XMvdXBsb2Fkcy9tb250aGx5XzAyXzIwMTAvcG9zdC0yNDAyNTc tMTI2Njk0Njg4NjAxNTkucG5n&b=13
You have now successfully referenced SQLite, and it can be added to any file by "using System.Data.SQLite;".

acreza
پنج شنبه 06 مهر 1391, 14:05 عصر
والا ما که هر کاری کردیم نشد .
حالا یک سوال دیگه دارم
من دیتبیسم با همین SQLite هستش حالا میخواهم یک ستون از هر کدام از جداول داخل این دیتابیس را رمز نگاری کنم ( البته کل فایل را براش پسورد گذاشتم ولی میخواهم جهت امنیت بیشتر اینکار را بکنم )
کد Encrypt را هم آماده دارم . تعداد رکوردهای خیلی زیاده باید تنها یک ستون از هر سطر را بخوانم بعد رمزنگاری کنم و دوباره اون ستون از هر سط را آپدیت کنم .
مثلا نام جدول table1 ستونها name , Tel , Adress , ID هستش که ID کلیدمان هستش
حالا من میخواهم تمام تلفن ها را با این دستور کد کنم :

CryptorEngine.Encrypt(clearText, true);
Cleartext یک متغیر از نوع استرینگ هستش و خروجی این دستور هم یک استرینگ کد شده هستش که قراره جای تلفن قبلی در دیتابس قرار بگیره

نکته : اینکار قراره روی همه رکوردهای دیتابیس یک بار انجام بشه ودیگه درج رکورد از طرف کاربر را نداریم فقط میخواهیم بخوانیم و توی دیتا گرید نشان بدیم که موقع نمایش را هم نمیدانم باید چطور انجام بدهم

acreza
پنج شنبه 06 مهر 1391, 14:22 عصر
فکر کنم باید همه رکوردها را بخوانم( فقط ID , tel رکورد ها را ) در دیتا تیبل بریزم بعد چطور به هر سلول ( که شماره تلفن باشه ) دسترسی داشته باشم ؟ که دونه دونه متن هر سلول را به کلاسی که گفتم انکریپت میکنه بدم و همون سلول را آپدیت کنم ؟
ببخشید من مبتدی هستم !!

acreza
پنج شنبه 06 مهر 1391, 16:38 عصر
من اطلاعاتم را ریختم نوی دیتاتیبل بعد ستون تلفن دیتاتیبل را انکریپت کردم حالا چطور دیتابیس را با استفاده از دیتاتیبل موجود باید آپدیت کرد ؟

morteza271
یک شنبه 16 مهر 1391, 11:53 صبح
آقا بالاخره من موفق شدم بدون نصب خود SQLite به دیتابیس وصل بشم.
کارهایی که باید انجام بشه به قراره زیره :
1- نصب Microsoft Visual C++‎‎ 2010 SP1 Redistributable Package (x86)
2- اضافه کردن dll ها که روششو دوستان گفتن
3- کار اصلی که باید انجام بشه اینه : باید در فایل .config برنامه کد زیر اضافه بشه :
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite"/>
<add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite"/>
</DbProviderFactories>
</system.data>

موفق باشید

acreza
یک شنبه 16 مهر 1391, 13:46 عصر
تشکر ولی من برنامه ای از اینترنت با همین sqlite گرفتم که بدون نصب Microsoft Visual C++‎‎‎ 2010 SP1 Redistributable Package (x86) هم فقط با یک dll کار میکنه اما سورس اش را ندارم . میخواهید دوباره الان پیداش میکنم و اینجا آپ میکنم ببینید

morteza271
یک شنبه 16 مهر 1391, 13:48 عصر
اگه بذارین ممنون میشم.
شما خودتون به نتیجه رسیدین یا نه؟

acreza
یک شنبه 16 مهر 1391, 14:54 عصر
آقا یه برنامه دیگه پیدا کردم با سورس کدش و Dll هاش فقط پیدا کنید چی کار کرده . مثل اینکه با .net 2008 یا 2005 نوشته که من سورسش را که بازمیکنم خطا میده ولی برنامه اجراییش راحت بدون نصب sqlite کار میده !!!!
یک چندتا Dll دیگه هم کنار برنامه هست

acreza
یک شنبه 16 مهر 1391, 14:57 عصر
چطوری باید تو فاروم آپلود کرد این لینک اش : http://www.codeproject.com/Articles/22165/Using-SQLite-in-your-C-Application
باید عضو بشید و دانلود کنید

morteza271
یک شنبه 16 مهر 1391, 19:29 عصر
من دانلودش کردم ولی راستش چیزی ازش نفهمیدم!
این از SQLite3 استفاده کرده ولی من از 4 استفاده میکنم.نمیدونم چطوره!!!!!!!! البته من این برنامه رو روی یه ویندوز XP که SQLite نصب نیست اجرا کردم ولی خطا داد و گفت نسخه Runtime framwork میخواد و اجرا نشد!
در صورتی که روی ویندوز نسخه 4 دات نت فریم ورک نصب هست!!!!!!!!!

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

f.beigirad
پنج شنبه 04 آبان 1391, 22:32 عصر
سلام بکس.

منم دوهفتس درگیر این مشکل لعنتیم.
از شانس بدم تازه کارم هستم.
یه پروژه نوشتم ،مشکل داشت.یکی از دوستان اصلاحش کردو تو همین سایت آپ کرد.

این تاپیکو ببینید:
http://barnamenevis.org/showthread.php?365948-%D9%85%D8%B4%DA%A9%D9%84-%D8%AF%D8%B1-%DA%A9%D8%A7%D8%B1-%D8%A8%D8%A7-sqlite

من که هر کاری کردم نتونستم dllرو با برنامم مچ کنم.

جون من هرکی فهمید بهم پیام شخصی بده