PDA

View Full Version : مبتدی: مشکل در ارتباط با پایگاه داده (connection string)



hadimtn
سه شنبه 30 دی 1393, 01:16 صبح
سلام به همه ی کاربران برنامه نویس؛
اول معذرت خواهی کنم که یه تاپیک تکراری ایجاد کردم.
اما بعد ...
تا حالا با پایگاه داده ارتباط برقرار نکردم. یه ویدئو زبان انگلیسی نگاه کردم و دیدم کار خاص نداره فقط Connection String من با اونی که تو ویدئو میزد خیلی فرق داشت.
هم تو ویدئو هم من Connection String رو از راست کلیک کردن روی اسم DataBase و انتتخاب Properties و کپی کردن Connection String بدست آوردیم.
من از ویژوال استودیو 2010 استفاده میکنم ولی توی ویدئو ظاهرا از ورژن بالاتر استفاده کرده بود، محیطش فرق داشت.
تو سیستم من این در اومد:
Data Source=.\SQLEXPRESS;AttachDbFilename="C:\Users\Hadi Mohammadi\documents\visual studio 2010\Projects\F0003\F0003\TestFDB.mdf";Integrated Security=True;Connect Timeout=30;User Instance=True
که اینجوری 51 خطا داره ولی وقتی آدرس رو کامل پاک میکنم هیچ خطایی نداره و اجرا میشه ولی هنگام ثبت کردن اطلاعات خطا میگیره:

127735


127739

لطفا راهنمایی کنید!

rezayeman
سه شنبه 30 دی 1393, 10:18 صبح
مشکل از کاننکشن که نگرفت
اینجا اسم جدولتو نتونست پیدا کنه
ببین در بقیه قسمتهای کار چه دستوراتی نوشتی

محمد رضا فاتحی
سه شنبه 30 دی 1393, 10:57 صبح
کانکشن استرینگی که توی متن نوشتید اشتباهه ادرس دیتابیس رو بهش ندادید
ایطوری تغییر بده ببین درست میشه
Data Source=.\SQLEXPRESS;AttachDbFilename="+Application.StartupPath+@"\TestFDB.mdf"+;Integrated Security=True;Connect Timeout=30;User Instance=True
البته با فرض اینکه دیتابیستون توی پوشه bin\debug باشه

hadimtn
سه شنبه 30 دی 1393, 11:38 صبح
ممنون. این تمام کد:

using System;using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.Sql;
using System.Data.SqlClient;




namespace MyProject
{
public partial class Form1 : Form
{
SqlCommand cmd;
SqlConnection con;
SqlDataAdapter da;




public Form1()
{
InitializeComponent();
}




private void button1_Click(object sender, EventArgs e)
{




con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename="+Application .StartupPath+@"\TestFDB.mdf"+;Integrated Security=True;Connect Timeout=30;User Instance=True");
con.Open();
cmd = new SqlCommand("INSERT INTO FTDBTable (Name,EId,Gender) VALUES (@Name,@EId,@Gender)", con);
cmd.Parameters.Add("@Name", textBox1.Text);
cmd.Parameters.Add("@EId", textBox2.Text);
cmd.Parameters.Add("@Gender",comboBox1.SelectedItem.ToString() );
cmd.ExecuteNonQuery();
}




}
}






تو قسمت new SqlConnection " ها کم میاد کجا باید بذارم. بازم ایراد گرفت!

RIG000
سه شنبه 30 دی 1393, 12:14 عصر
0- بعد از تنظیم دقیق کانکشن استرینگ و اجرای بدون خطا con.open در قدم های بعد
1- اول ببین همچین table رو تو دیتابیس داری یا نه.

2-
من یه نمونه میزارم به این شکل تنظیم کن 3 پارامتر خودت رو .

da.InsertCommand.Parameters.Add("@firstname", SqlDbType.VarChar).Value = textBox1.Text;
3- اگه نشد باید لطف کنی جدول رومجدد بسازی . ببینی جواب میده.
4 - البته باز روشهایی هست -

hadimtn
سه شنبه 30 دی 1393, 15:44 عصر
جواب نداد!
یه پروژه جدید ایجاد کردم و همون کارهای قبلی رو انجام دادم؛

con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename="+Application .StartupPath+@"\Database.mdf"+;Integrated Security=True;Connect Timeout=30;User Instance=True");


اینبار بصورت دستی دیتایس رو بردم داخل پوشه ی Debug و بعد داخل پروژه اوردم. الان Connection String از Properties دیتابیس اینه:

Data Source=.\SQLEXPRESS;AttachDbFilename="C:\Users\Hadi Mohammadi\documents\visual studio 2010\Projects\WFA001\WFA001\Database.mdf";Integrated Security=True;Connect Timeout=30;User Instance=True

ولی بازم خطا میگیره! :متفکر:

hadimtn
سه شنبه 30 دی 1393, 15:47 عصر
0- بعد از تنظیم دقیق کانکشن استرینگ و اجرای بدون خطا con.open در قدم های بعد
1- اول ببین همچین table رو تو دیتابیس داری یا نه.

2-
من یه نمونه میزارم به این شکل تنظیم کن 3 پارامتر خودت رو .

da.InsertCommand.Parameters.Add("@firstname", SqlDbType.VarChar).Value = textBox1.Text;
3- اگه نشد باید لطف کنی جدول رومجدد بسازی . ببینی جواب میده.
4 - البته باز روشهایی هست -

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

hadimtn
سه شنبه 30 دی 1393, 15:52 عصر
مشکل از کاننکشن که نگرفت
اینجا اسم جدولتو نتونست پیدا کنه
ببین در بقیه قسمتهای کار چه دستوراتی نوشتی

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

hadimtn
سه شنبه 30 دی 1393, 16:00 عصر
اول از Server Explorer دیتابیس رو میسازم (یا Add میکنم) بعد از Data Source اقدام به وارد کردن سورس میکنم (این کار نیاز هست؟!)

محمد رضا فاتحی
سه شنبه 30 دی 1393, 16:18 عصر
سلام شما می تونید با کد نویسی و استفاده از SqlCommand هم استفاده کنید.

hadimtn
سه شنبه 30 دی 1393, 22:43 عصر
دوستان مشکل کجاست؟!؟!؟!؟! چرا وصل نمیشه.
چرا خطا میگیره... ؟ :افسرده:

khokhan
چهارشنبه 01 بهمن 1393, 14:33 عصر
دوستان مشکل کجاست؟!؟!؟!؟! چرا وصل نمیشه.
چرا خطا میگیره... ؟ :لبخند::افسرده::لبخند:
نمونه رو آپلود کنین دوستان بررسی کنن

hadimtn
یک شنبه 05 بهمن 1393, 15:19 عصر
بفرمایید اینم نمونه!!!
.

http://s5.picofile.com/file/8166146792/WFA001.zip.html

khokhan
دوشنبه 06 بهمن 1393, 19:09 عصر
به به...
آفرین به پاسخ گویی این انجمن !!!............................................... ........
!

.................................................. ............

hadimtn
دوشنبه 06 بهمن 1393, 23:09 عصر
ممنون از اینکه زحمت کشیدین و درست کردین ولی ای کاش توضیح میدادین که چیکار کردین!!!!
پایگاه داده رو با چی ساختین؟! کانکشن استرینگ رو چرا اینجوری نوشتین؟! تو پوشه ی برنامه هم یه چیزایی اضافه شده مثلا یه فایل مربوط به شما (Schema)
*
من این نمونه رو میخواستم یاد بگیرم تا تو پروژه ی خودم که باید به پایگاه داده وصل بشم استفاده کنم! :متفکر:

khokhan
دوشنبه 06 بهمن 1393, 23:23 عصر
ممنون از اینکه زحمت کشیدین و درست کردین ولی ای کاش توضیح میدادین که چیکار کردین!!!!
پایگاه داده رو با چی ساختین؟! کانکشن استرینگ رو چرا اینجوری نوشتین؟! تو پوشه ی برنامه هم یه چیزایی اضافه شده مثلا یه فایل مربوط به شما (Schema)
*
من این نمونه رو میخواستم یاد بگیرم تا تو پروژه ی خودم که باید به پایگاه داده وصل بشم استفاده کنم! :متفکر:
کار خاصی صورت نگرفته یه رشته اتصال داخل class1 به شکل استاتیک قرار دادم تا در تمام پروژه قابل دسترسی باشه :


public static string CONN_STRING = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\Database.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";

البته این نوع رشته اتصال AutoAttach میباشد و نیازی با اتک کردن دستی بانک نیست یعنی به محض اجرای برنامه فایل بانک از پوشه دیباگ پروژه در مسیر قرار می گیره

بعدش هم در هر کدوم از فرمها که نیاز بوده همین رشته رو فراخوانی کردم


con = new SqlConnection(Constants.CONN_STRING);
البته ایرادی که توی جدول شما وجود داشت این بود که نام جدول رو Table گذاشته بودین و این اسم با توابع داخل وِیژوال اشتباه گرفته می شد سعی کنین در نام گذاریهاتون دقت کنین :لبخند:

hadimtn
دوشنبه 13 بهمن 1393, 19:35 عصر
کار خاصی صورت نگرفته یه رشته اتصال داخل class1 به شکل استاتیک قرار دادم تا در تمام پروژه قابل دسترسی باشه :


public static string CONN_STRING = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\Database.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";

البته این نوع رشته اتصال AutoAttach میباشد و نیازی با اتک کردن دستی بانک نیست یعنی به محض اجرای برنامه فایل بانک از پوشه دیباگ پروژه در مسیر قرار می گیره

بعدش هم در هر کدوم از فرمها که نیاز بوده همین رشته رو فراخوانی کردم


con = new SqlConnection(Constants.CONN_STRING);
البته ایرادی که توی جدول شما وجود داشت این بود که نام جدول رو Table گذاشته بودین و این اسم با توابع داخل وِیژوال اشتباه گرفته می شد سعی کنین در نام گذاریهاتون دقت کنین :لبخند:

بسیار ممنون.
اگه بخوام چک کنم ببینم این فیلدها خالی هستن یا نه باید به چه شکل عمل کنم؟! یعنی اگه خالی بود یه پیام نشون بده که فیلدها خالی هستند.
من تو همون دکمه ی مربوط به وارد کردن (insert) قبل از همه‌ی کدها این کد رو نوشتم ولی جواب نگرفتم:
if textBox1 =""
MessageBox.Show("لطفا نام کالا را وارد کنید، این کادر نباید خالی باشد!!!");

هیچ جای دیگه هیچ تغییری ندادم... !!!