PDA

View Full Version : مبتدی: خطا در بروز رسانی پایگاه داده SQL



kolibri
یک شنبه 03 تیر 1397, 14:06 عصر
سلام
من می خوام مقدار Following رو در تیبل مطرح شده بروزرسانی کنم:

command.CommandText = "UPDATE Primuser SET Following = @Following Where Insta = @Id";
command.Parameters.AddWithValue("@Following", S);
command.Parameters.AddWithValue("@Id", Q[0]);
connection.Open();
command.ExecuteNonQuery();


ولی در خط آخر این خطا رو دارم:
System.InvalidOperationException: 'ExecuteNonQuery: Connection property has not been initialized.'

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

danialafshari
یک شنبه 03 تیر 1397, 14:44 عصر
با سلام
خطا میگه که پراپرتی کانکشن مقدار اولیه ندارد
قبل از ExecuteNonQuery کد زیر را اضافه کنید که کانکشن command رو به کانکشن استرینگ برنامه نسبت دهد
command.Connection = YourConnectionString;
موفق باشید

kolibri
یک شنبه 03 تیر 1397, 15:40 عصر
با سلام
خطا میگه که پراپرتی کانکشن مقدار اولیه ندارد
قبل از ExecuteNonQuery کد زیر را اضافه کنید که کانکشن command رو به کانکشن استرینگ برنامه نسبت دهد
command.Connection = YourConnectionString;
موفق باشید

یه سری تغییرات دادم و تونستم بدون خطا پیش برم، پیام موفقیت هم ظاهر میشه ولی هیچ تغییری در بروزرسانی مشاهده نمیشه:

connection = new SqlConnection();
connection.ConnectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;"
+ @"AttachDbFilename=|DataDirectory|\User.mdf;"
+ "Integrated Security=True;"
+ "Connect Timeout=30";
SqlCommand command = new SqlCommand();
command.CommandText = "SELECT * FROM Primuser";
command.Connection = connection;

SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = command;
DataSet dataset = new DataSet();
adapter.Fill(dataset, "Primuser");

foreach (DataRow row in dataset.Tables["Primuser"].Rows)
{
if (row["Insta"].ToString() == "dsf")
{
row["Following"] = "1024";
}
}

SqlCommandBuilder builder = new SqlCommandBuilder(adapter);

try
{
var result = adapter.Update(dataset, "Primuser");

if (result > 0)
MessageBox.Show("Update Successful.");
else
MessageBox.Show("Update Failed.");
}
catch (SqlException ex)
{
MessageBox.Show(ex.Message);
}
}

danialafshari
یک شنبه 03 تیر 1397, 17:22 عصر
خب توی Sql Server چک کنید مگر میشه اتفاقی نیوفته
Breakpoint بذارید تا ببینید روال دیباگ به چه شکل هست
این کد کدوم قسمت هست و بالایی کدوم قسمت؟
اون حلقه foreach برای چی هست؟
موفق باشید

kolibri
یک شنبه 03 تیر 1397, 18:07 عصر
خب توی Sql Server چک کنید مگر میشه اتفاقی نیوفته
Breakpoint بذارید تا ببینید روال دیباگ به چه شکل هست
این کد کدوم قسمت هست و بالایی کدوم قسمت؟
اون حلقه foreach برای چی هست؟
موفق باشید

هیچ تغییر نیست.
بریک گذاشتم، تا انتها میره و مشکلی نداره
کد بالاییی رو قبلا نوشته بودم، به جاش پایینی رو نوشتم (از روش دیگری رفتم).
حلقه هم تک تک ردیف های جدول رو چک می کنه، اگر اون ردیف برابر بود، آپدیت می کنه.

...
یکی در بحث مشابه این رو گفته؛ ولی نمی دونم چطور رفعش کنم:

You probably have two mdf files. You do not need to mdf file in the connection string. The SQL server already has the mdf file attached to the database so it is sufficient to just use the database name in the connection string. The database is not getting refresh when you write directly to the mdf file

danialafshari
دوشنبه 04 تیر 1397, 00:40 صبح
پست اول شما با پست بعدی شما متفاوته؟
شما اول اومدید کل جدول رو سلکت کردید بعد adapter رو fill میکنید بعد حلقه میزنید و... خب چه کاریه
پست 1 باید درست باشه و آپدیت انجام بشه!