ارتباط دادن با ديتا بيس

Rainmater

Member
سلام
مي خواستم بدونم چه جوري ميشه در vc sharp با يه بانك اطلاعاتي ارتباط برقرار كرد؟مثلا sql

فرض كنيد سه text box نام فاميل و تلفن روي فرم هست چجوري ميشه با كليك روي يك button اونا رو توي ديتا بيس ذخيره كردوبرعكس(load كردن از داخل ديتابيس).
من در دستورات sql مشكلي ندارم.!

اگه به صورت قدم به قدم و با يه مثال توضيح بديد ممنون ميشم.


با تشكر
 

the_king

مدیرکل انجمن
سلام
مي خواستم بدونم چه جوري ميشه در vc sharp با يه بانك اطلاعاتي ارتباط برقرار كرد؟مثلا sql

فرض كنيد سه text box نام فاميل و تلفن روي فرم هست چجوري ميشه با كليك روي يك button اونا رو توي ديتا بيس ذخيره كردوبرعكس(load كردن از داخل ديتابيس).
من در دستورات sql مشكلي ندارم.!

اگه به صورت قدم به قدم و با يه مثال توضيح بديد ممنون ميشم.

با تشكر

قبل از هر چیز بانک اطلاعاتی رو به پروژه تون متصل کنید (در منوی Data، گزینه Add New Data Source) تا دسترسی
به جدول داده ها میسر شود. حتما Table های مورد نظرتان را در پس از معرفی کردن فایل بانک اطلاعاتی تیک بزنید.

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

فرض کنیم که اسم بانک اطلاعاتی MyDB باشه، در اینصورت MyDBDataSetTableAdapters مجموعه آداپتور های
بانک اطلاعاتی خواهد بود و MyDBDataSet مجموعه جداول بانک اطلاعاتی.

فرض کنیم که در این بانک اطلاعاتی یک جدول به اسم MyTB داریم. در اینصورت MyDBDataSetTableAdapters.MyTBTableAdapter
آداپتور جدول MyTB خواهد بود و MyDBDataSet.MyTBDataTable
خود جدول MyTB

چه برای خواندن از جدول MyTB و چه برای نوشتن در جدول MyTB اول باید یک نمونه از آنرا ایجاد کرده و برای
استفاده آماده کنیم. برای اینکار به آداپتور اش هم نیاز داریم :
کد:
            MyDBDataSetTableAdapters.MyTBTableAdapter adapter
                = new MyDBDataSetTableAdapters.MyTBTableAdapter();
            MyDBDataSet.MyTBDataTable table
                = new MyDBDataSet.MyTBDataTable();
            adapter.Fill(table);

با کد های بالا، ما یک آداپتور با نام adapter و یک جدول با نام table آماده کرده ایم که محتویات MyTB در آن فراخوانی
شده است.

در ادامه می توانیم فرضا لیست تمامی کسانی که نام شان ali است را از این table بخوانیم و فرضا نام فامیلی
اولین مورد را نمایش دهیم :
کد:
            DataRow[] rows = table.Select("FirstName = 'ali'");
            if (rows.Length > 0)
            {
                string lastName = rows[0]["LastName"].ToString();
                MessageBox.Show(lastName);
            }

در کد بالا فرض شده است که جدول MyTB یک فیلد با نام FirstName و یک فیلد با نام LastName دارد.

برای نوشتن یک مورد جدید در یک جدول اول باید یک سطر جدید در آن ایجاد کرد. سپس محتویات فیلد های آن
سطر را پر کرد. در انتها بایستی توسط آداپتور محتویات جدول را در بانک اطلاعاتی ثبت کرد. دقت کنید که
اگر مرحله آخر انجام نشود، محتویات جدول صرفا در حافظه RAM تغییر می کنند و در جایی ذخیره نمی گردند.

کد زیر برای مرحله اول است، یعنی ایجاد کردن یک سطر جدید، با نام newRow که فعلا خالی است :
کد:
            MyDBDataSet.MyTBRow newRow = (MyDBDataSet.MyTBRow)table.NewRow();

در مرحله دوم محتویات فیلد های newRow را پر می کنیم، بستگی به تعداد و نام فیلد های MyTB دارد :
کد:
            newRow.FirstName = "ali";
            newRow.LastName = "saeid";
            newRow.ID = 123;
            table.AddMyTBRow(newRow);

اکنون جدول table شامل فیلد جدید newRow است، اما تا مرحله سوم انجام نشود همه چیز فقط در حافظه
RAM ثبت شده :
کد:
            adapter.Update(table);

یک مورد را فراموش نکنید، ویژوال استدیو بصورت پیشفرض از شما سوال می کند که آیا می خواهید بانک اطلاعاتی
به داخل پوشه پروژه تان کپی شود یا خیر. اگر جواب مثبت بدهید، یک نسخه از بانک اطلاعاتی در پروژه تان
قرار می گیرد تا بجای نسخه اصلی از آن استفاده شود. اما مساله اینجا است، ویژوال استدیو بصورت پیشفرض
هر بار که پروژه را اجرا می کنید، مجددا این عمل کپی را انجام می دهد. یعنی تمامی تغییراتی که هر بار اجرا کردن
پروژه در بانک اطلاعاتی رخ داده از بین می رود.

برای جلوگیری از این عمل، بانک اطلاعاتی را در Solution Explorer پیدا کرده و رویش کلیک کنید. حالا در بخش
Properties گزینه Copy to Output Directory را از Copy Always به Copy if newer تغییر دهید.
 

Rainmater

Member
ممنون از توضیحات کامل شما
شاید من هنوز با این برنامه نویسی شی گرا مچ نشدم،ا1-گه میشه این قسمت
MyDBDataSetTableAdapters.MyTBTableAdapter adapter
= new MyDBDataSetTableAdapters.MyTBTableAdapter();
MyDBDataSet.MyTBDataTable table
= new MyDBDataSet.MyTBDataTable();
adapter.Fill(table); رو یه توضیحی بدید.

2-دستورات عملیات ذخیره و بازیابی اطلاعات از دیتابیس(در اینجا) به چه زبانی است؟
مثلا:
newRow.FirstName

یا
DataRow[] rows = table.Select("FirstName = 'ali'");
در اینجا ِdatarow[] چیه که یه نمونه ازش ساختید
اصلا نحوهی ساخت نمونه چیست؟
کلا این خط بالا رو توضیح بدبد.

آیا برای sql هم روش همین هست یا خیر؟
اگه این طوری نیست یه مثال ساده بزنید(آسون) ممنونت میشم.
3-شما در این مثال فرض رو بر این گرفته اید که جدول آماده شده،مراحل ساخت جدول و نحوهی اتصال اونو VC# ؟
4-نمیشه یه مثال ساده رو با سورسش بزارید؟(لطفا)
5- سلامتی شما
 

the_king

مدیرکل انجمن
ممنون از توضیحات کامل شما
شاید من هنوز با این برنامه نویسی شی گرا مچ نشدم،ا1-گه میشه این قسمت
MyDBDataSetTableAdapters.MyTBTableAdapter adapter
= new MyDBDataSetTableAdapters.MyTBTableAdapter();
MyDBDataSet.MyTBDataTable table
= new MyDBDataSet.MyTBDataTable();
adapter.Fill(table);
رو یه توضیحی بدید.

همانطور که قبلا اشاره کردم، اگر نام بانک اطلاعاتی MyDB باشد، MyDBDataSetTableAdapters.MyTBTableAdapter
کلاس آداپتور آن است، ما یک شیء با نام adapter از همین کلاس تعریف می کنیم :
کد:
            MyDBDataSetTableAdapters.MyTBTableAdapter adapter

متغیر adapter بایستی مقدار دهی شود، پس یک شیء از کلاس مربوطه را با new می سازیم :
کد:
                = new MyDBDataSetTableAdapters.MyTBTableAdapter();
اکنون adapter یک آداپتور آماده برای جدول MyDB است که به بانک اطلاعاتی دسترسی دارد و می تواند یک
جدول را بخواند و یا بنویسد.

اما هنوز ما متغیری نداریم که جدول در آن خوانده و یا در بانک اطلاعاتی نوشته شود، پس باید آنرا تعریف کنیم.
همانطور که قبلا اشاره کردم MyDBDataSet.MyTBDataTable کلاس جدول MyTB است، ما یک شیء با نام
table را از این کلاس تعریف می کنیم :
کد:
            MyDBDataSet.MyTBDataTable table

متغیر table بایستی مقدار دهی شود، پس یک شیء از کلاس مربوطه را با new می سازیم :
کد:
                = new MyDBDataSet.MyTBDataTable();

اکنون ما در table یک شیء از جدول MyTB را داریم، اما جدول خالی است، یعنی هیچ سطری در آن وجود ندارد.
چرا؟ چون هنوز به آداپتور اش رجوع نکرده ایم و از بانک اطلاعاتی چیزی در آن نخوانده ایم. اکنون وقت آن رسیده
که با کمک آداپتور محتویات جدول را از بانک اطلاعاتی بخوانیم و در متغیر table مان قرار دهیم :
کد:
            adapter.Fill(table);

2-دستورات عملیات ذخیره و بازیابی اطلاعات از دیتابیس(در اینجا) به چه زبانی است؟
مثلا:
newRow.FirstName
با زبان های #C و Visual Basic که سازگار است، یعنی در این قسمت از کد هیچ فرقی بین زبان های
مورد اشاره نیست و کد شان یکسان خواهد بود.
در زبان ++C بجای نقطه از <- استفاده میشه، یعنی :
کد:
newRow -> FirstName

DataRow[] rows = table.Select("FirstName = 'ali'");
در اینجا []datarow چیه که یه نمونه ازش ساختید
اصلا نحوهی ساخت نمونه چیست؟
کلا این خط بالا رو توضیح بدبد.
جدول کلا یک تعداد مشخصی سطر دارد، یعنی Row.
در Net. هر سطر از یک جدول یا کلا Query یک DataRow است، مثلا اگر جدول MyTB چهار سطر داشته باشد،
در حقیقت چهار DataRow دارد که بصورت یک آرایه تک بعدی یعنی []DataRow تعریف می شود.

من دستور Select که در SQL تعریف شده و حتما با آن آشنا هستید رو اجرا کرده ام و نتیجه رو بصورت یک آرایه
از DataRow در متغیر rows تحویل گرفته ام. شرط Select ام هم که مشخص است، فقط سطر هایی را
می خواهم که فیلد FirstName شان برابر با ali است. نتیجه هر چند سطر که باشد در آرایه rows قرار می گیرد.

آیا برای sql هم روش همین هست یا خیر؟
اگه این طوری نیست یه مثال ساده بزنید(آسون) ممنونت میشم.
کلا اساس کار با بانک اطلاعاتی در این مثال همان SQL است، آن دستور Select هم که من نوشتم دستور SQL است.

3-شما در این مثال فرض رو بر این گرفته اید که جدول آماده شده،مراحل ساخت جدول و نحوهی اتصال اونو VC# ؟
4-نمیشه یه مثال ساده رو با سورسش بزارید؟(لطفا)
5- سلامتی شما
منظورتون رو از جدول آماده متوجه نمیشم، شما بانک اطلاعاتی رو قاعدتا یا با SQL Server طراحی می کنید
و یا Microsoft Access و یا هر ابزار مشابهی. عموما جدول رو هم با همین برنامه ها می سازید که کلا بحث
کار با اون ابزار ها جداست و ربطی به مباحث برنامه نویسی نداره. اما نحوه اتصالشون رو کلی توضیح دادم :
قبل از هر چیز بانک اطلاعاتی رو به پروژه تون متصل کنید (در منوی Data، گزینه Add New Data Source) تا دسترسی
به جدول داده ها میسر شود. حتما Table های مورد نظرتان را در پس از معرفی کردن فایل بانک اطلاعاتی تیک بزنید.

جزئیات این روند مربوط به نوع بانک بانک اطلاعاتی، رمز عبور و جداول داخلشه، مورد ثابتی نیست که توضیح اش
رو بخواهید. اصلا کار سختی نیست، نوع بانک اطلاعاتی رو مشخص می کنید، مسیر فایل بانک اطلاعاتی رو
مشخص می کنید، اگه رمز عبوری داشته باشه، اون رو هم مشخص می کنید، در نهایت هم جدولی که می خواهید
در برنامه با اونها کار کنید رو هم تیک می زنید، فقط همین. بقیه کار ها رو خود ویژوال استدیو انجام میده
و کلاس های مورد نظر رو می سازه.

اما اگه می خواهید صرفا با کد نویسی جدولی بسازید که قبلا در بانک اطلاعاتی وجود نداشته، قصد انجام
کاری رو دارید که در هر 100 پروژه بانک اطلاعاتی شاید یکی دو مورد اینچنین کاری رو انجام بدهند. هدفتون از اینکه
قبلا جدول مورد نظر رو ایجاد نمی کنید چیه؟

به نظرتون این یک کار از ساختن جدول با Microsoft Access یا Microsoft SQL Server و استفاده از آن در برنامه
ساده تر است؟ کار تون خیلی سخت میشه، چون دیگه ویژوال استدیو نمی تونه به راحت کردن کار با جدول تون
کمکی بکنه. بایستی از دستورات صریح SQL کمک بگیرید ، در ضمن باید با نحوه attach کردن بانک اطلاعاتی در
SQL Server و تنظیم کردن connection آشنا باشید. اگه با توجه به ساختار پروژه مجبور به انجام اینکار نیستید
توصیه نمی کنم که خودتون رو به دردسر بندازید. بیشترین مزیت دسترسی به بانک اطلاعاتی در ویژوال استدیو
در همین سادگی کار با جداولی است که قبلا اطلاعاتش رو در اختیار ویژوال استدیو قرار می دهید.

هر صورت یک نگاهی به این لینک بندازید :

Create Table in SQL Server 2005 Using C# and SQL Server Management

در ضمن کد کامل یک پروژه نمونه رو پیوست کردم.
 

پیوست ها

  • SampleDB.zip
    84.3 کیلوبایت · بازدیدها: 23

Rainmater

Member
ممنون توضيحاتت كامل بود

فقط اگر در موقع اجرا بخوايم يه جدولي بسازيم مثلا:
create table student (id int , name varchar(10, family varchar(30) )))
اين رو چه جوري اجرا كنيم.
در كل بتونيم كلييه ي دستورات sql رو اجذا كنيم.(حتي create database)

با تشكر
 

the_king

مدیرکل انجمن
ممنون توضيحاتت كامل بود

فقط اگر در موقع اجرا بخوايم يه جدولي بسازيم مثلا:
create table student (id int , name varchar(10, family varchar(30) )))
اين رو چه جوري اجرا كنيم.
در كل بتونيم كلييه ي دستورات sql رو اجذا كنيم.(حتي create database)

با تشكر


ابتدا این کد رو به ابتدای کد ها اضافه کنید :

کد:
using System.Data.SqlClient;

اول دستورات SQL مورد نظرتون رو داخل یک رشته قرار دهید :
کد:
            string queryString = "CREATE TABLE student (id INT , name VARCHAR(10), family VARCHAR(30));";

بعد از اینکه بانک اطلاعاتی رو به پروژه اتصال دادید، مقدار connectionString ای که برای ارتباط استفاده می کنید
رو بدست بیاورید. عبارت testDatabaseConnectionString در پروژه شما اسم دیگری خواهد بود :
کد:
            string connectionString = Properties.Settings.Default.testDatabaseConnectionString;

حالا با استفاده از connectionString یک SqlConnection بسازید :
کد:
            SqlConnection connection = new SqlConnection(connectionString);

در ادامه با توجه به دستور SQL مورد نظر و با توجه به connection مورد نظر یک SqlCommand بسازید :
کد:
            SqlCommand command = new SqlCommand(queryString, connection);

ارتباط تان را باز کنید، اگر همه چیز بخوبی پیش برود ارتباط با بانک اطلاعاتی برقرار می شود :
کد:
            connection.Open();

اکنون دستور مورد نظر را روی بانک اطلاعاتی اجرا می کنید :
کد:
            command.ExecuteNonQuery();

اگر کار دیگری با بانک اطلاعاتی ندارید ارتباط را می بندید :
کد:
            connection.Close();
 

Rainmater

Member
سلام
فرض كنيد 3 editbox نام و نام خانوادگي و شهر را داريم:
شي Binding Navigator را چه جوري به ديتابيس وصل كنيم؟ و مقادير متناسب با texbox را به آن بدهيم؟
ونحوهي پيمايش بين مقادير جدول(دكمه هاي perev-next) حذف واضافه ركورد؟
در كل اين كنترل را توضيح دهيد و اگه با يه مثال براي هر قسمت(نحوه ي add , delete و...) باشه قابل فهم تره.
(منظورم با استفاده از تنظيمات propertied هستش )
با تشكر فراوان THE KING عزيز
 

the_king

مدیرکل انجمن
سلام
فرض كنيد 3 editbox نام و نام خانوادگي و شهر را داريم:
شي Binding Navigator را چه جوري به ديتابيس وصل كنيم؟ و مقادير متناسب با texbox را به آن بدهيم؟
ونحوهي پيمايش بين مقادير جدول(دكمه هاي perev-next) حذف واضافه ركورد؟
در كل اين كنترل را توضيح دهيد و اگه با يه مثال براي هر قسمت(نحوه ي add , delete و...) باشه قابل فهم تره.
(منظورم با استفاده از تنظيمات propertied هستش )
با تشكر فراوان THE KING عزيز

کد نویسی خاصی لازم نیست، اول یک کنترل BindingNavigator روی فرم قرار دهید، مثلا bindingNavigator1
سپس یک BindingSource روی فرم قرار دهید، مثلا bindingSource1
حالا کنترل bindingSource1 رو انتخاب کنید و در بخش Properties ، مقدار DataSource اش را روی DataSet
مربوط به بانک اطلاعاتی تان تنظیم کنید، مثلا Other Data Sources > Project Data Sources > MyNewDatabaseDataSet
مقدار DataMember اش را هم روی Table مورد نظرتان قرار دهید، مثلا MyTBL

بصورت خودکار کنترل هایی برای DatabaseDataSet و TableAdapter ساخته خواهند شد.
اکنون کنترل bindingNavigator1 را انتخاب کنید و در بخش Properties ، مقدار BindingSource اش را روی bindingSource1
قرار دهید.

حالا اگر می خواهید کنترل های TextBox را روی فیلد های جدول تنظیم کنید، هر کدام از کنترل های TextBox را
انتخاب کرده و در بخش Properties ، مقدار DataBinding ).Text ) اش را روی فیلدی در bindingSource1 تنظیم کنید،
مثلا bindingSource1 - FirstName

حالا اگه پروژه را اجرا کنید، می توانید با دکمه های bindingNavigator1 جدول را پیمایش کنید.
 

Rainmater

Member
سلام مجدد
اگه بخوايم با كليك روي يه button كنترل bindngnavigator به جدولي ديگر برود ؟
يا به جدول ديگه اي در ديتابيس ديگه اي برود؟
آيا بايد خاصيت binding source اونو عوض كنيم؟
 

the_king

مدیرکل انجمن
سلام مجدد
اگه بخوايم با كليك روي يه button كنترل bindngnavigator به جدولي ديگر برود ؟
يا به جدول ديگه اي در ديتابيس ديگه اي برود؟
آيا بايد خاصيت binding source اونو عوض كنيم؟

بله و ترجیحا از یک BindingSource دیگه استفاده کنید، چون اگه در مشخصات bindingSource1 دست ببرید بایستی
ابتدا کنترل های TextBox تون رو از روی فیلد DataBinding شده خارج کنید.
 

Rainmater

Member
ما كه نميدونيم كاربر كدومو انتخاب ميكنه!!
فرض كنيد 4تا ديتابيس داريم:
-و فيلد هاي جدو لها مشابه هم هستند
-يك binding navigator داريم
كاربر با انتخاب ديتابيس مورد نظر -ديتابيس جاري به ديتا بيس انتخاب شده تغيير كنه؟
binding navigator روي ديتابيس انتخابي كار كنه؟
 

the_king

مدیرکل انجمن
ما كه نميدونيم كاربر كدومو انتخاب ميكنه!!
فرض كنيد 4تا ديتابيس داريم:
-و فيلد هاي جدو لها مشابه هم هستند
-يك binding navigator داريم
كاربر با انتخاب ديتابيس مورد نظر -ديتابيس جاري به ديتا بيس انتخاب شده تغيير كنه؟
binding navigator روي ديتابيس انتخابي كار كنه؟

فرقی نمی کنه، حتی اگه نام فیلد های جداول هم مثل هم باشه باز هم بایستی مشخصه های همه کنترل ها
تغییر کنه، چون اتصال بین یک فیلد و دیتابیس یک ارجاع است، حتی اگه نام فیلد تغییر نکنه چون جای دیگری است
مقدار ارجاع متفاوته.

شما باید بین برنامه و دیتابیس ارتباط برقرار کنید، نیاز به connection دارید، نیاز به DatabaseDataSet دارید،
به TableAdapter و BindingSource هم همینطور. همه اینها و کلا هر چیزی که قبل از اجرای برنامه روی فرم
ایجاد می کنید رو می توانید با کد نویسی در زمان اجرا ایجاد کنید، اما به هر حال بایستی اینها رو ایجاد کنید،
چه از قبل پیشبینی کنید و روی فرم طراحی کنید و چه با کد نویسی در زمان اجرا بسازید.
 

Rainmater

Member
وقتي به وسيله يك binding navigator يك فيلد اضافه يا حذف ميكنيم اين تغييرات در dataset اعمال ميشوند:
چه طوري اين تغييرات را در خود ديتابيس ثبت كنيم(اضافه-حذف-تغيير)
اگه با مثال باشه مفهومي تره.
با تشكر
 

MPERSIA4

Member
قبل از هر چیز بانک اطلاعاتی رو به پروژه تون متصل کنید (در منوی Data، گزینه Add New Data Source) تا دسترسی
به جدول داده ها میسر شود. حتما Table های مورد نظرتان را در پس از معرفی کردن فایل بانک اطلاعاتی تیک بزنید.

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

فرض کنیم که اسم بانک اطلاعاتی MyDB باشه، در اینصورت MyDBDataSetTableAdapters مجموعه آداپتور های
بانک اطلاعاتی خواهد بود و MyDBDataSet مجموعه جداول بانک اطلاعاتی.

فرض کنیم که در این بانک اطلاعاتی یک جدول به اسم MyTB داریم. در اینصورت MyDBDataSetTableAdapters.MyTBTableAdapter
آداپتور جدول MyTB خواهد بود و MyDBDataSet.MyTBDataTable
خود جدول MyTB

چه برای خواندن از جدول MyTB و چه برای نوشتن در جدول MyTB اول باید یک نمونه از آنرا ایجاد کرده و برای
استفاده آماده کنیم. برای اینکار به آداپتور اش هم نیاز داریم :
کد:
            MyDBDataSetTableAdapters.MyTBTableAdapter adapter
                = new MyDBDataSetTableAdapters.MyTBTableAdapter();
            MyDBDataSet.MyTBDataTable table
                = new MyDBDataSet.MyTBDataTable();
            adapter.Fill(table);

با کد های بالا، ما یک آداپتور با نام adapter و یک جدول با نام table آماده کرده ایم که محتویات MyTB در آن فراخوانی
شده است.

در ادامه می توانیم فرضا لیست تمامی کسانی که نام شان ali است را از این table بخوانیم و فرضا نام فامیلی
اولین مورد را نمایش دهیم :
کد:
            DataRow[] rows = table.Select("FirstName = 'ali'");
            if (rows.Length > 0)
            {
                string lastName = rows[0]["LastName"].ToString();
                MessageBox.Show(lastName);
            }

در کد بالا فرض شده است که جدول MyTB یک فیلد با نام FirstName و یک فیلد با نام LastName دارد.

برای نوشتن یک مورد جدید در یک جدول اول باید یک سطر جدید در آن ایجاد کرد. سپس محتویات فیلد های آن
سطر را پر کرد. در انتها بایستی توسط آداپتور محتویات جدول را در بانک اطلاعاتی ثبت کرد. دقت کنید که
اگر مرحله آخر انجام نشود، محتویات جدول صرفا در حافظه RAM تغییر می کنند و در جایی ذخیره نمی گردند.

کد زیر برای مرحله اول است، یعنی ایجاد کردن یک سطر جدید، با نام newRow که فعلا خالی است :
کد:
            MyDBDataSet.MyTBRow newRow = (MyDBDataSet.MyTBRow)table.NewRow();

در مرحله دوم محتویات فیلد های newRow را پر می کنیم، بستگی به تعداد و نام فیلد های MyTB دارد :
کد:
            newRow.FirstName = "ali";
            newRow.LastName = "saeid";
            newRow.ID = 123;
            table.AddMyTBRow(newRow);

اکنون جدول table شامل فیلد جدید newRow است، اما تا مرحله سوم انجام نشود همه چیز فقط در حافظه
RAM ثبت شده :
کد:
            adapter.Update(table);

یک مورد را فراموش نکنید، ویژوال استدیو بصورت پیشفرض از شما سوال می کند که آیا می خواهید بانک اطلاعاتی
به داخل پوشه پروژه تان کپی شود یا خیر. اگر جواب مثبت بدهید، یک نسخه از بانک اطلاعاتی در پروژه تان
قرار می گیرد تا بجای نسخه اصلی از آن استفاده شود. اما مساله اینجا است، ویژوال استدیو بصورت پیشفرض
هر بار که پروژه را اجرا می کنید، مجددا این عمل کپی را انجام می دهد. یعنی تمامی تغییراتی که هر بار اجرا کردن
پروژه در بانک اطلاعاتی رخ داده از بین می رود.

برای جلوگیری از این عمل، بانک اطلاعاتی را در Solution Explorer پیدا کرده و رویش کلیک کنید. حالا در بخش
Properties گزینه Copy to Output Directory را از Copy Always به Copy if newer تغییر دهید.

سلام
من داخل SQL جدول ها رو درست کردم ولی داخل #C هرکاری میکنم نشون داده نمیشه
گفتید که از قسمت
Add New Data Source ولی هیچ کدوم از جدول ها رو نشون نمیده!!!!!
مشکل کجاست؟!
 

the_king

مدیرکل انجمن
سلام
من داخل SQL جدول ها رو درست کردم ولی داخل #C هرکاری میکنم نشون داده نمیشه
گفتید که از قسمت
Add New Data Source ولی هیچ کدوم از جدول ها رو نشون نمیده!!!!!
مشکل کجاست؟!

اول از تون نام Server رو می پرسه که اگه درست باشه، نام بانک اطلاعاتی تون قابل انتخابه که اگه درست باشه Connection برقرار میشه
و تازه در بخش انتخاب Dataset از بین Table ها و View ها و ... موارد انتخابی تون رو تیک می زنید. اگر به بخش انتخاب جداول رسیده باشید
و جدولی برای تیک زدن نباشه، مفهومش اینه که یا جدولی ساخته نشده که تیک بخوره یا بانک اطلاعاتی دیگری رو انتخاب کرده اید که خالیه.
 

جدیدترین ارسال ها

بالا