PDA

View Full Version : اشکال در ارتباط با پایگاه داده



kolibri
سه شنبه 12 تیر 1397, 11:32 صبح
سلام؛
من در تاپیک به مشکل مسخره ای برخورد کردم، و هنوز هم درگیر اون هستم.
گاهی که پروژه رو باز می کنم، اتصال به جدول ها وجود داره و اطلاعات جدول نیز لود میشه. گاهی هم نه.
تمامی کوئری ها هم بدون خطا اجرا می شوند، با بریک پوینت تا انتها چک کردم.
در بکند اگر یک کوئری بدم، مثلا آپدیت، رکورد پیدا میشه و آپدیت هم میشه. اما همون ها رو در فرم دیگر نمی تونم سلکت کنم.
همانطور که می بینید، ارتباط رو دارم:
148491
تیبل ها نیز با کوئری ساخته شدن:
SqlConnection connection = new SqlConnection();
SqlCommand command = new SqlCommand();
SqlDataReader reader;

command = new SqlCommand();
connection.ConnectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\ Users\Ya-Allah\source\instabank\instabank\User.mdf;Integrat ed Security=True";
command.Connection = connection;
connection.Open();
command.CommandText = "IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Director]') AND type in (N'U')) BEGIN" +
" CREATE TABLE [dbo].[Director] (" +
" [Id] INT IDENTITY(1, 1) NOT NULL," +
"[Insta] VARCHAR(50) NOT NULL," +
"[Name] TEXT NULL," +
"[Bio] TEXT NULL," +
"[Following] VARCHAR(250) NOT NULL," +
"[Follower] VARCHAR(250) NOT NULL," +
"[State] VARCHAR(50) NOT NULL," +
"[Useroo] VARCHAR(50) NOT NULL," +
"PRIMARY KEY CLUSTERED([Id] ASC)" +
");" +
"END";
var h = command.ExecuteReader();
connection.Close();

اما مثلا اطلاعات مربوط به تیبل یوزرپرایم لود میشه، اما مثلا کوئری آپدیت بزنم، چیزی لود نمیشه.
انگار چندین دیتابیس و جدول مختلف با یک نام وجود دارد.

برخی از دوستان گفتند مشکل از رشته اتصال هست، اگر رشته رو به صورت زیر بنویسم، دیگر کلا همان جدول هم لود نمیشه :گریه:

connection.ConnectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|Da taDirectory|\User.mdf;Integrated Security=True";

دیتابیس در سولوشن پروژه قرار داره:
148492

sds1920
سه شنبه 12 تیر 1397, 14:04 عصر
اینجور که میبینم دیتابیس رو به Solution برنامه Add کردین. اینکار باعث میشه با هربار Rebuild کردن یک کپی از دیتابیس اولیه رو براتون کپی کنه و تغییراتی که توی دیتابیس دادین بپره.
امیدوارم که مشکل همین باشه.

kolibri
سه شنبه 12 تیر 1397, 17:12 عصر
اینجور که میبینم دیتابیس رو به Solution برنامه Add کردین. اینکار باعث میشه با هربار Rebuild کردن یک کپی از دیتابیس اولیه رو براتون کپی کنه و تغییراتی که توی دیتابیس دادین بپره.
امیدوارم که مشکل همین باشه.
سلام؛
پس راه حل درستش چی هست؟
این رو که گفتید، رفتم پراپرتیز رو چک کردم، و حالت کپی رو گذاشتم در حالت Copy if Newer.
ولی همچنان مشکل به قوت خودش باقی هست.
مسئله دیگر هم اینه که بدون بیلد کردن هم همین مشکل هست. البته تا دیروز، وقتی بیلد میکردم اینطور میشد. اما امروز کلا تغییری ذخیره نمی شود.
در این زمان هم فقط کانکشن استرینگ تغییر کرده.
از:
connection.ConnectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;"
+ @"AttachDbFilename=|DataDirectory|\User.mdf;"
+ "Integrated Security=True;"
+ "Connect Timeout=30";
به:
connection.ConnectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|Da taDirectory|\User.mdf;Integrated Security=True";

sds1920
چهارشنبه 13 تیر 1397, 06:49 صبح
سلام؛
پس راه حل درستش چی هست؟
این رو که گفتید، رفتم پراپرتیز رو چک کردم، و حالت کپی رو گذاشتم در حالت Copy if Newer.
ولی همچنان مشکل به قوت خودش باقی هست.
مسئله دیگر هم اینه که بدون بیلد کردن هم همین مشکل هست. البته تا دیروز، وقتی بیلد میکردم اینطور میشد. اما امروز کلا تغییری ذخیره نمی شود.
در این زمان هم فقط کانکشن استرینگ تغییر کرده.
از:
connection.ConnectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;"
+ @"AttachDbFilename=|DataDirectory|\User.mdf;"
+ "Integrated Security=True;"
+ "Connect Timeout=30";
به:
connection.ConnectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|Da taDirectory|\User.mdf;Integrated Security=True";

راه حل درست اینه که شما دیتابیس رو کلا از solution خارج کنید و به خود اسکیول سرور Attach کنید. با این روش Connection String شما چیزی شبیه زیر میشه:

Data Source=Localhost;Initial Catalog=DbName;User ID=sa;Password=***********

kolibri
چهارشنبه 13 تیر 1397, 09:16 صبح
راه حل درست اینه که شما دیتابیس رو کلا از solution خارج کنید و به خود اسکیول سرور Attach کنید. با این روش Connection String شما چیزی شبیه زیر میشه:

Data Source=Localhost;Initial Catalog=DbName;User ID=sa;Password=***********


]چطور این کار رو انجام بدم؟!