PDA

View Full Version : اتصال به sql 2000 در C#‎



user68
جمعه 04 دی 1388, 11:39 صبح
با سلام
من دارم یه برنامه تو سی شارپ مینویسم و میخوام با یه بانک اطلاعاتی که توی 2000sql ساختم ارتباطش بدم ولی دقیقا نمیدونم باید چی کار کنم .اگه میشه یکی از دوستان مراح اولیه رو به صورت دقیق بگه ممنون میشم.
و همین طور در مورد رشته اتصال و پارامتراش.
مثلا رشته یاتصالی مثل این یعنی چه


SqlConnection con1 = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=F:\project_fa regholtahsili\data_lib\lib.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");

با تشکر

c#_programmer
جمعه 04 دی 1388, 12:26 عصر
سلام
استاندارد رشته اتصال در سی شارپ به صورت زیر است:

string data_connection="data source=your_server_name; initial catalog=your_database_name;itegrated security=true"


موفق باشید

c#_programmer
جمعه 04 دی 1388, 12:29 عصر
به عنوان مثال:

string strcon;
strcon="data source=ASHKAN-PC\\SQLEXPRESS;initial catalog=student;integrated security=true"

user68
جمعه 04 دی 1388, 20:27 عصر
اگه میشه نحوه اتصال با بانک اطلاعاتی رو هم توضیح بدید .
با تشکر

user68
شنبه 05 دی 1388, 11:16 صبح
این همه برنامه نویس چرا کسی راهنمایی نمیکنه!!!

user68
شنبه 05 دی 1388, 20:13 عصر
مثلا من میخوام بدونم موقعی که یه Datagride رو روی فرم میزاریم بعدش باید چی کار کنیم و چه اشیای رو برای اتصال به بانک اطلاعاتی استفاده کنیم؟
با تشکر

user68
یک شنبه 06 دی 1388, 14:06 عصر
یعنی کسی نیست جواب سوال منو بده!!! :ناراحت:

Rejnev
یک شنبه 06 دی 1388, 14:18 عصر
سلام
http://barnamenevis.org/forum/showthread.php?t=171229
توی این آدرس اطلاعات رو توی یک گرید نمایش دادم




using System.data;
using System.data.SqlClient;
.
.
.
string cnn="data source=(loca);initial catalog=student;integrated security=true";
sqlDataAdapter da=new SqlDataAdapter();
da.SelectCommand=new SqlCommand();
da.SelectCommand.Connection=new SqlConnection();
da.SelectCommand.Connection.ConnectionString=cnn;
da.SelectCommand.CommandText="select * from tableName";
DataTable dt=new DataTable();
da.Fill(dt);
GridView1.DataSource=dt;

Aram594
دوشنبه 07 دی 1388, 10:31 صبح
سلام به شما .می تونید به من بگین چطوری میشه در سی شارپ textbox ی ایجاد کرد که به بانک Sqlمتصل بشه , که با نوشتن دراوناطلاعات داخلش به بانک sql انتقال داده بشه؟؟

ازتونبسیار ممنون میشم.

Rejnev
سه شنبه 08 دی 1388, 00:49 صبح
سلام به شما .می تونید به من بگین چطوری میشه در سی شارپ textbox ی ایجاد کرد که به بانک Sqlمتصل بشه , که با نوشتن دراوناطلاعات داخلش به بانک sql انتقال داده بشه؟؟

ازتون بسیار ممنون میشم.
سلام
شما میتونید یک کنترل رو به یک منبع داده بایند کنید و با یک ابزار مثل BindingNavigation داده ها رو مرور کنید اما به نظر من اضافه کردن DataSource و BindingSource و غیره به صورت ویزارد به برنامه کاری جز پایین آوردن انعطاف نمیکنه.
چیزی که من یاد دارم اینه که اگه بخوام مثلا داده های یک جدول رو مرور کنم بصورت ساده اول داده ها رو توی یک جدول (DataTable) واکشی میکنم و بعد برای نمایش اطلاعات در مثلا TextBox هر سطر از جدول واکشی شده رو توی تکست نمایش میدم.
روش بایند رو یاد ندارم ولی مزیتی که روش زیر داره اینه که کنترل تمام برنامه دست خودمونه

فرض کنید اطلاعات این جدول رو میخوایم مرور کنیم

http://barnamenevis.org/forum/attachment.php?attachmentid=41757&stc=1&d=1262035053

یک فرم میسازم حاوی دو تکست و دو کلید برای عقب و جلو بردن اطلاعات

http://barnamenevis.org/forum/attachment.php?attachmentid=41756&stc=1&d=1262034609

اول باید یک Connection String برای اتصال به بانک ایجاد کنیم.
پس، از منوی View گزینه Server Explorer رو کلیک میکنم تا پنجره مربوطه باز بشه
در این پنجره شما میتونید بدون اینکه تغییری در برنامه تون ایجاد بشه به بانک وصل بشین و داده ها رو مشاهده و ویرایش کنید و جدول بسازین و... خلاصه برای خودش یک پا محیط اس کیو اله. چیزی که فعلا توی این محیط به درد ما میخوره Connection string هست که باید به دستش بیاریم
روی آیکون Connect To Database کلیک میکنم و در پنجره باز شده در قسمت ServerName کلمه (local) و یا یک نقطه "." میذارم.(local داخل پرانتزه) بعد از اون در قسمت Select or Enter a Database Name دیتابیس های اون سرور نمایش داده خواهد شد و دیتابیس مورد نظر رو انتخاب میکنم.در اینجا master رو انتخاب میکنم چون حاضر و آمادست.

http://barnamenevis.org/forum/attachment.php?attachmentid=41758&stc=1&d=1262036198

اگه برنامه خطا نده دیتابیس به پنجره اضافه میشه حالا روی دیتابیس کلیک میکنیم و در همون حالت انتخاب شده به پنجره Properties میریم(منوی View گزینه Properties) باید یک شکل شبیه زیر ببینید و در این حالت مقدار درون Connection String رو کپی میکنیم.

http://barnamenevis.org/forum/attachment.php?attachmentid=41759&stc=1&d=1262036681

تا ینجا ایجاد ConnctionString بود

Rejnev
سه شنبه 08 دی 1388, 01:11 صبح
در ادامه
یک متغیر سراسری تعریف میکنم تا موقعیت رکورد فعلی رو نگه داره و با کلید ها مقدار اون رو کم و زیاد میکنم
یک DataTable سراسری هم تعریف میکنم تا اطلاعات رو توی اون بار کنم
فضای نامهای مورد نیاز رو هم اضافه میکنم
توی رویداد Form_Load کد زیر رو مینویسم تا table مورد نظرم رو پر کنم
دقت کنید که معمولا روال کار با بانک بصورت زیره
بانکهای اطلاعاتی مثل SqlServer به صورت سرویس روی سیستم اجرا میشن
یعنی همیشه گوش به زنگن تا اینکه یک دستور بهشون برسه و دستور رو اجرا کنن و خروجی برگردونن
با این تفاسیر
ابتدا باید یک ارتباط یا Connection به بانک ایجاد میکنیم
دستور رو بفرستیم (Command)
خروجی رو بگیریم (مثل Table)
ارتباط رو قطع کنیم





...
using System.Data;
using System.Data.SqlClient;
...

DataTable table;
int i;

private void Form1_Load(object sender, EventArgs e)
{
table = new DataTable();
i = 0;
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = new SqlCommand();
da.SelectCommand.Connection = new SqlConnection();
da.SelectCommand.Connection.ConnectionString = "Data Source=.;Initial Catalog=master;Integrated Security=True";
da.SelectCommand.CommandText = "select top 20 * from sysmessages";
try
{
da.Fill(table);
}
catch
{
}
}


کد بالا جدول رو با دستور اس کیو ال نوشته شده پر میکنه.
دقت کنید که متد Fill نیازی به باز و بسته کردن ارتباط نداره و خودش این کار رو انجام میده
ولی اگه ما خودمون دستی ارتباط رو باز کنیم متد Fill اون رو نمیبنده.

حالا برای مرور داده ها
برای رویداد های کلیک کلیدها کد زیر رو مینویسم




private void btnMoveNext_Click(object sender, EventArgs e)
{
if (table.Rows.Count<0)
return;
if (i < table.Rows.Count)
i++;
txtCode.Text = table.Rows[i]["Error"].ToString();
txtName.Text = table.Rows[i]["description"].ToString();
Text = "record=" + i;
}

private void btnMovePrevious_Click(object sender, EventArgs e)
{
if (table.Rows.Count < 0)
return;
if (i > 0)
i--;
txtCode.Text = table.Rows[i]["Error"].ToString();
txtName.Text = table.Rows[i]["description"].ToString();
Text = "record=" + i;
}


http://barnamenevis.org/forum/attachment.php?attachmentid=41761&stc=1&d=1262038083

Rejnev
سه شنبه 08 دی 1388, 01:15 صبح
سورس تا اینجای کار رو گذاشتم
در صورت تمایل برای نوشتن کد حذف و ویرایش اعلام کنید