PDA

View Full Version : مبتدی: ذخیره نشدن داده ها در database



adelante94
پنج شنبه 15 خرداد 1393, 23:37 عصر
سالم خدمت اساتید گرامی.
چرا وقتی connectionstring رو به شکل زیر تعریف می کنم چیزی در دیتابیس ذخیره نمیشه :
string con = "Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirecto ry|\\Database1.mdf;Integrated Security=True;User Instance=True";
و باید کل مسیر دیتابیس رو کپی کنم تا اطلاعات ثبت بشه :
string constring = "Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\Document s and Settings\\PhpNight\\My Documents\\Visual Studio 2010\\Projects\\WindowsFormsApplication1\\WindowsF ormsApplication1\\DataBase\\Database1.mdf;Integrat ed Security=True;Connect Timeout=30;User Instance=True";

به نظر شما اشکال کار من کجاست؟
مرسی

Mahmoud.Afrad
پنج شنبه 15 خرداد 1393, 23:55 عصر
از کانکشن اول استفاده کنید.
اگر خطایی رخ نمیده پس اطلاعات ثبت میشه منتها در هر بار دیباگ دیتابیس خام جایگذین میشه(دیتابیس توی مسیر پروژه خام و دیتابیس توی پوشه دیباگ یک کپی از اونه). توی لینک زیر کامل توضیح داده شده (عنوان و کدها رو کاری نداشته باش فقط توضیحات رو توجه کن)
http://barnamenevis.org/showthread.php?388471

gjmkdyttyhujk
پنج شنبه 15 خرداد 1393, 23:56 عصر
شما باید فایل دیتابیستون رو در سیستم مشتری کنار فایل اجرایی برنامه قرار بدید تا کار کنه. در مورد کد اولتون میگم.

adelante94
جمعه 16 خرداد 1393, 00:13 صبح
متشکرم ،مشکلم داره حل میشه ولی نفهمیدم چرا چیزی در دیتابیس root ثبت نمیشه ولی در شاخه دیباگ ثبت میشه ؟؟؟
و اینکه "شما باید فایل دیتابیستون رو در سیستم مشتری کنار فایل اجرایی برنامه قرار بدید تا کار کنه." یعنی چی؟
متشکرم.

Mahmoud.Afrad
جمعه 16 خرداد 1393, 00:29 صبح
برای اینکه در زمان دیباگ داده هایی وارد دیتابیس میکنید که به درد نمیخوره و فقط برای تست برنامه هست پس باید یک نسخه از دیتابیس به صورت خام وجود داشته باشه.
در انتها وقتی خواستی برنامه رو منتشر کنی میفهمی که به دیتابیس خام نیاز داری.
اگر هم میخوای اطلاعاتی در دیتابیس از قبل وجود داشته باشه (مثلا نام استان و شهرها و ...) میتونی با تغییر موقت کانکشن و یا از طریق Server explorer اطلاعات رو وارد دیتابیس اصلی کنی.

gjmkdyttyhujk
جمعه 16 خرداد 1393, 03:01 صبح
متشکرم ،مشکلم داره حل میشه ولی نفهمیدم چرا چیزی در دیتابیس root ثبت نمیشه ولی در شاخه دیباگ ثبت میشه ؟؟؟
و اینکه "شما باید فایل دیتابیستون رو در سیستم مشتری کنار فایل اجرایی برنامه قرار بدید تا کار کنه." یعنی چی؟
متشکرم.
به این معنی هست که فایل های mdf و ldf پایگاه داده تون رو در پوشه ای که فایل exe برنامه در اون قرار داره قرار بدید. و از کانکشن استرینگ اولتون استفاده کنید.
موفق باشید

تبسم ساینا
پنج شنبه 19 تیر 1393, 00:16 صبح
سلام دوستان
من یه برنامه دارم به زبان سی شارپ.واسش یه کد درج نوشتم ولی مشکل اینجاست وقتی داده ای درج میکنم , وقتی هنوز برنامه رو نبستم در پایگاه داده درج میشه ولی وقتی برنامه رو بستم میبینم در کمال تعجب اون داده در پایگاه داده نیس!!
چند تا عکس هم گذاشتم , اگه میشه نگاه کنید ممنون.

اینجا مرحله درجه :
http://upload7.ir/imgs/2014-07/96867178084294198601.png

http://upload7.ir/imgs/2014-07/05777098373788357608.png


در اینجا فرم رو بستم و دوباره باز کردم همون طور که میبیند داده درج شده وجود نداره !! :

http://upload7.ir/imgs/2014-07/27358075579976665328.png

systam
پنج شنبه 19 تیر 1393, 00:24 صبح
سلام
کد استفاده شده دربرنامه رو بزار

تبسم ساینا
پنج شنبه 19 تیر 1393, 00:30 صبح
این کل کد درج :
int cd = int.Parse(txtcode.Text); OleDbDataAdapter da = new OleDbDataAdapter("select * from TbSick where [Code Sick]=" + cd, con);
DataTable dt = new DataTable();
da.Fill(dt);
if (dt.Rows.Count != 0)
{
MessageBox.Show("کد بیمار تکراری است");
return;
}
if (txtname.Text == "" || txtfamily.Text == "")
return;
con.Open();
string st;
if (checkBox1.Checked)
st = "Yes";
else
st = "No";
OleDbCommand cmd = new OleDbCommand("insert into TbSick ([Code Sick],Name,Family,[Phone Number],[Confiend Date],[Release Date],[Confiend Expense],[Code Bakhsh],[Code Doktore],[Code Room],[Code Nurse],Survive) values (@p1,@p2,@p3,@p4,@p5,@p6,@p7,@p8,@p9,@p10,@p11,@p1 2)", con);


cmd.Parameters.AddWithValue("@p1", txtcode.Text);
cmd.Parameters.AddWithValue("@p2", txtname.Text);
cmd.Parameters.AddWithValue("@p3", txtfamily.Text);
cmd.Parameters.AddWithValue("@p4", txttel.Text);
cmd.Parameters.AddWithValue("@p5", textBox5.Text);
cmd.Parameters.AddWithValue("@p6", textBox6.Text);
cmd.Parameters.AddWithValue("@p7", textBox7.Text);
cmd.Parameters.AddWithValue("@p8", textBox8.Text);
cmd.Parameters.AddWithValue("@p9", textBox9.Text);
cmd.Parameters.AddWithValue("@p10", textBox10.Text);
cmd.Parameters.AddWithValue("@p11", textBox11.Text);
cmd.Parameters.AddWithValue("@p12", st);
cmd.ExecuteNonQuery();
con.Close();

اینم فیلدهای جدول :
http://s5.picofile.com/file/8129416150/Screenshot_63_.png

systam
پنج شنبه 19 تیر 1393, 00:37 صبح
شکل صحیح کد نویسی اینطوریه

try {
SqlConnection con = new SqlConnection();
con.ConnectionString = """;
SqlCommand com = new SqlCommand();
com.Connection = con;
com.CommandText = "insert into data values(@name,@family,@sh_sh,@sen)";
com.Parameters.AddWithValue("name", TextBox2.Text);
com.Parameters.AddWithValue("family", TextBox3.Text);
com.Parameters.AddWithValue("sh_sh", TextBox4.Text);
com.Parameters.AddWithValue("sen", TextBox5.Text);

con.Open();
com.ExecuteNonQuery();
con.Close();
}
catch (Exception ex) {
// MsgBox(ex.Message)
}

تبسم ساینا
پنج شنبه 19 تیر 1393, 11:11 صبح
خب اونجوری که من نوشتم اشکالش چیه؟

تبسم ساینا
پنج شنبه 19 تیر 1393, 15:58 عصر
دوستان کسی نمیتونه کمک کنه ؟!

abbas.oveissi
پنج شنبه 19 تیر 1393, 17:08 عصر
شاید شما هم هربار Build میکنید ، دیتابیس روی دیتابیس قبلی کپی میشه.اینطور نیست؟چون دستورات Insert که نوشتید مشکل خاصی نداره .

mahtab.kamali
پنج شنبه 19 تیر 1393, 17:16 عصر
دوستان کسی نمیتونه کمک کنه ؟!
فایل دیتابیس رو توی کدم قسمت پروژه قرار دادین ؟ ومطمئن هستید که دوتا نیست و حتما یکیه ؟؟؟

systam
پنج شنبه 19 تیر 1393, 17:40 عصر
خب اونجوری که من نوشتم اشکالش چیه؟
سلام
یه نگاه بنداز ببین چطوره یکم تو کد نویسیش اشکالاتی بود
اون عملیات چک باکس رو غیر فعالش کردن کاراش با خودت برای اجرا هم مسیر بانک رو عوض کن
یا علی

تبسم ساینا
جمعه 20 تیر 1393, 21:44 عصر
خب دوستان ممنونم از کمک هاتون.
مشکل حل شد.
دلیلش هم یه مسئله خیلی ساده بود که تا حالا باهاش برخورد نکرده بودم.اونم این که من پایگاه داده رو تووی Solution کپی کرده بودم به خاطر همین این مشکلات ایجاد شده بود.
ممنونم از توجه دوستان.