دیتابیس با سی شارپ

saalek110

Well-Known Member
منبع:
http://www.java2s.com/Code/CSharp/Database-ADO.net/ConnectstoaMicrosoftAccessdatabase.htm

برای اتصال به یک فایل(دیتابیس) اکسس:
برنامه زیر علاوه بر فرم یک باتون هم دارد و در گام سوم این پست یک تکست باکس هم اضافه می شود.
کد:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;

namespace Connect_access
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            String connect = "Provider=Microsoft.JET.OLEDB.4.0;data source=.\\ClassProjects.mdb";
            OleDbConnection con = new OleDbConnection(connect);
            con.Open();
            MessageBox.Show("Made the connection to the ClassProjects database");
            con.Close();
        }
    }
}
من دیتابیس را در پوشه دیباگ کنار فایل اجرایی قرار دادم.وقتی که برمی داشتم خطای زمان اجرا می داد.

= = == = == = = = = =
گام بعد : حالا کوئری هم می گیریم:
منبع: http://www.java2s.com/Code/CSharp/D...nnectionobjecttoconnecttoanAccessdatabase.htm


کد:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;

namespace Connect_access
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            String connect = "Provider=Microsoft.JET.OLEDB.4.0;data source=.\\ClassProjects.mdb";
            OleDbConnection con = new OleDbConnection(connect);

            OleDbCommand myOleDbCommand = con.CreateCommand();
            myOleDbCommand.CommandText =
      "SELECT * " +
      "FROM PROJECT " +
      "WHERE Code = 'INT202'";

            con.Open();
          
            OleDbDataReader myOleDbDataReader = myOleDbCommand.ExecuteReader();
            myOleDbDataReader.Read();


            MessageBox.Show("myOleDbDataReader[\" Code\"] = " + myOleDbDataReader["Code"]);
            MessageBox.Show("myOleDbDataReader[\" Number\"] = " + myOleDbDataReader["Number"]);
            MessageBox.Show("myOleDbDataReader[\" Title\"] = " + myOleDbDataReader["Title"]);
            MessageBox.Show("myOleDbDataReader[\" Due\"] = " + myOleDbDataReader["Due"]);
            MessageBox.Show("myOleDbDataReader[\" Points\"] = " + myOleDbDataReader["Points"]);
            con.Close();
        }
    }
}
توجه کنید که کامند به دو چیز نگاه کرده یکی به کانکشن و یکی به متن کوئری.
و ریدر به کامند نگاه کرده.
توجه کنید که ریدر یک رکورد(سطر) از تیبل را می خواند.

= = = = == = = = = =
گام سوم: می خواهیم کاربر با نوشتن در یک تکست باکس مقدار فیلد Code را انتخاب کند.
فقط کوئری به شکل زیر تغییر می کند.(یک تکست باکس هم به فرم بیافزایید)
کد:
            myOleDbCommand.CommandText =
      "SELECT * " +
      "FROM PROJECT " +
      "WHERE Code = '" + textBox1.Text + "'";
البته سینتکس بحث دارد که من کمی کار کردم و به نتایج زیر رسیدم. شما هم بررسی کنید.
کد:
            //=' " + textBox1.Text + " '";                    // baraye reshteh
            // ----------------------------------------------
            //int employeeNumber = int.Parse(textBox1.Text);  // baraye adad
            //=" + employeeNumber + "";                       // baraye adad
یعنی تکه آخر کوئری اگر وصله اضافه شده عدد باشد یا رشته می تواند سینتکسهای مختلف داشته باشد.
این را گفتم تا حواستان باشد. البته شاید فرقی نکند و همان که در کوئری در بالا گذاشته همه جا جواب دهد. ولی من می خواستم تک کوتیشن را بردارم که وقتی عدد باشد می شود برداشت ولی برای رشته انگار گیر می دهد.
می دانید که محتوای تکست باکس ها رشته است و اگر بخواهید عدد بشود باید با parse تبدیل کنید.
دیتابیس مذکور را هم از اینجا با حجم حدود 300 کیلو دانلود کنید.
http://www.hammerdata.com/Google/ClassProjects.mdb
 
آخرین ویرایش:

saalek110

Well-Known Member
در پست قبل در 3 گام ارتباط با اکسس را کار کردیم. و حالا کمی همان کدها را شرح می دهیم تا در پستهای بعدی به کارهای مفیدتری بپردازیم.
خط زیر:
کد:
String connect = "Provider=Microsoft.JET.OLEDB.4.0;data source=.\\ClassProjects.mdb";
یک متغیر رشته ای ساخته ایم تا به عنوان وردی به کانکشن بدهیم تا او بفهمد چطور و به کجا وصل شود. وسیله همان Microsoft.JET.OLEDB.4.0 است و مقصد اتصال .\\ClassProjects.mdb است. گفتیم که با این نوع آدرس دهی پوشه جاری را نشان می دهیم. در سورس بعدی پوشه ای دو طبقه بالاتر(همان طور که در ویندوز up را می زنید و از پوشه ای خارج می شوید) را نشانه می رویم.

خط بعدی یعنی :
کد:
OleDbConnection con = new OleDbConnection(connect);

آماده ایم از کلاس کانکشن شی آن را ساخته ایم(البته با دادن رشته ای که قبلا ساخته بودیم به عنوان ورودی) سازنده این کلاس می تواند رشته قبول کند. با سرچ OleDbConnection در آبجکت بروسر با پیدا کردن متدهای همنام با نام کلاس شما سازنده ها را یافته اید. یا اینکه با نوشتن این قسمت:
کد:
OleDbConnection con = new OleDbConnection(
یعنی وقتی پرانتز را باز می کنیم انواع ورودی سازنده را با شماره نشان می دهد که در این جا دو تاست. یکی خالی و دیگری ورودی شامل رشته.
البته می دانم همه این نکات را می دانند ولی تکرار بهتر است از ناقص بودن.

خط بعدی:
کد:
con.Open();
که متد Open از شی ساخته شده از کلاس OleDbConnection را صدا زده. وقتی پرانتز را باز می کنیم می بینیم که این متد ورودی ندارد.
در خط بعدی هم که یک مسیج باکس اعلام می کند که کانکشن برقرار است و بعد هم در خط بعدی Close می کنیم کانکشن را.

می رسیم به گام دوم :
در این گام قبل Open کردن کانکشن آمده ایم Command خود را ساخته ایم. که حاوی یک دستور sql است.
همان طور که می دانید دستورات sql برای صحبت کردن با موتورهای مدیریت دیتابیس ها هستند . دستورات ساده ای هستند و همان طور که نوشته می شوند اگر تحلیل کنیم سریع می فهمیم که چه کاری انجام می دهند. برای آموختن این دستورات به کتابهای آن مراجعه کنید.
در دستور ما می گوید که سلکت کن (انتخاب کن) –ستاره(یعنی همه فیلدها(ستونها) را ) از تیبل(جدول) PROJECT این دیتابیس (دیتابیس شامل یک یا چند تیبل می تواند باشد) WHERE (هنگامی که) در فیلد(ستون) Code مقدار INT202 را داشته باشیم.
در گام بعد ریدر ما دستور را اجرا کرده و بعد به شکل آرایه فیلدهای درون ریدر را چاپ کرده ایم. این ریدر اولین رکورد(ردیف)ی که شرط برقرار باشد را به ما می دهد ولی باید ردیفهای بعدی را هم دریافت کنیم که بماند برای سورس های بعدی.
در آخر هم که کانکشن بسته Close شده.

گام سوم هم که فقط کوئری تغییر کرده و خواسته ایم به جای INT202 در کوئری قبلی محتوای تکست باکس که کاربر وارد می کند قرار گیرد. یعنی کاربر به نوعی می تواند در ستون Code دنبال چیزی بگردد. مثلا در ستون نام اگر بود دنبال اسم خود بگردد و بعد برنامه نمره امتحان او را چاپ کند.
 

saalek110

Well-Known Member
سورس برنامه قبل فقط قادر بود برنامه دیتابیس را بگردد و ردیف جواب را چاپ کند ولی در سورس بعدی که از این سایت قابل دانلود است :
http://www.dotnetspider.com/tutorials/CRUDSample.aspx
ما قادر به تغییر دیتابیس خود نیز هستیم. ولی اساس کار فرقی ندارد و فقط کوئری تغییر می کند.

بعد دانلود سورس و دیتابیس همراه این سایت با باز کردن دیتابیس در اکسس تصویر زیر را خواهیم داشت:

a6.gif


که تنها تیبل موجود در دیتابیس را من باز کرده ام که 3 فیلد دارد شامل امپلوئی نامبر - نام - آدرس. و می بینید که سازنده مثل من بی حوصله بوده و در پر کردن این سه ردیف هم وقت نگذاشته و با حروف تکراری پر کرده.

پروژه این سایت با وی اس 2003 است . و بعد باز کردن با وی اس(ویژوال استودیو) 2005 بدون اشکال تبدیل می شود. ولی من می خواهم یک پروژه ویندوزی خالی باز کنم و از اول خودم بسازمش.
اسم پروژه را من tel_book می گذارم چون برای دفتر تلفن خیلی این پروژه مناسبه. شامل دو فیلد نام و شماره تلفن. ولی من در اینجا بخاطر تیبل موجود 3 فیلدی کار می کنم.
خوب پس یک پروژه بسازید و 4 باتون و 3 تکست باکس و 3 لیبل روی آن قرار دهید تا شروع کنیم.
من کپشن دکمه ها و لیبل ها را هم عوض میکنم تا بعد اجرای این فرم خالی از کد چنین شود:

a7.gif


بعد کدها را هم اضافه می کنم. یعنی از پروژه دانلود شده برای رویداد کلیک 4 دکمه کدش را پیست می کنم و یک تابع هم که دارد در انتها اضافه می کنم. حالا می ماند این که بروم فایل دیتابیس را هم داخل پوشه پروژه خودم کپی و پیست کنم. باید دو سطح بالاتر از پوشه بین-دیباگ پروژه من باشد چون در سورس چنین آدرس داده شده. حالا پروژه را اجرا می کنم.
و روی این خط خطا می گیرم:
کد:
OleDbConnection myConnection = new OleDbConnection(connectionString);
و دلیلش اینه که من یادم رفته یوزینگها را اضافه کنم. راه حلش ساده است. روی کلمه OleDbConnection یعنی نام کلاس ماوس را نگه دارید طبق شکل زیر می گوید چنین Type یا نیم اسپیسی وجود ندارد آیا اضافه کردن یوزینگ یا رفرنس را فراموش نکرده اید.

a8.gif


و بعد با کلیک روی نام کلاس داریم:

a9.gif

که دو راه را پیشنهاد می کند. که یکی افزودن یوزینگ مورد نیاز یا کامل نوشتن مسیر کلاس است. که با کلیک هر یک مشکل برنامه حل می شود.

بعد باز با خطا روبرو می شوم به این علت که نام تکست باکس ها را عوض نکرده بودم که با کپی-پیست مشکل حل می شود. پس صفت name تکس باکسها را هم عوض کنید.
البته شما می توانید پروژه را دانلود کنید و بدون زحمت کار کنید. من به خاطر آموزش و تمرین دارم پروژه را از نو می سازم و شاید راههای ساده تری هم باشد برای این کار که به احتمال زیاد هست ولی فعلا من به شکل دستی کار می کنم.
برنامه این بار اجرا شد. و در دیتابیس هم نتایج ذخیره شد.

b1.gif

این هم کل کد فرم:
کد:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;


namespace tel_book
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (ValidateInputs() == false)
                return;

            string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=..\\..\\Employee.mdb";

            OleDbConnection myConnection = new OleDbConnection(connectionString);
            myConnection.Open();

            int employeeNumber = int.Parse(txtEmployeeNumber.Text);
            string name = txtName.Text;
            string address = txtAddress.Text;
            string query = "insert into EMPLOYEE_TABLE (EmployeeNumber, Name, Address) VALUES (" + employeeNumber + ", '" + name + "', '" + address + "')";

            OleDbCommand myCommand = new OleDbCommand();
            myCommand.CommandText = query;
            myCommand.Connection = myConnection;
            myCommand.ExecuteNonQuery();

            myConnection.Close();

            MessageBox.Show("Created.");
        }

        private void button2_Click(object sender, EventArgs e)
        {
            if (ValidateInputs() == false)
                return;

            string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=..\\..\\Employee.mdb";

            OleDbConnection myConnection = new OleDbConnection(connectionString);
            myConnection.Open();

            int employeeNumber = int.Parse(txtEmployeeNumber.Text);
            string query = "delete from EMPLOYEE_TABLE where EmployeeNumber = " + employeeNumber;

            OleDbCommand myCommand = new OleDbCommand();
            myCommand.CommandText = query;
            myCommand.Connection = myConnection;
            myCommand.ExecuteNonQuery();

            myConnection.Close();


            MessageBox.Show("Deleted.");
        }

        private void button3_Click(object sender, EventArgs e)
        {
            if (ValidateInputs() == false)
                return;

            string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=..\\..\\Employee.mdb";

            OleDbConnection myConnection = new OleDbConnection(connectionString);
            myConnection.Open();

            int employeeNumber = int.Parse(txtEmployeeNumber.Text);
            string name = txtName.Text;
            string address = txtAddress.Text;
            string query = "update EMPLOYEE_TABLE set Name = '" + name + "', Address = '" + address + "' where EmployeeNumber = " + employeeNumber;

            OleDbCommand myCommand = new OleDbCommand();
            myCommand.CommandText = query;
            myCommand.Connection = myConnection;
            myCommand.ExecuteNonQuery();

            myConnection.Close();

            MessageBox.Show("Updated.");
        }

        private void button4_Click(object sender, EventArgs e)
        {
            string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=..\\..\\Employee.mdb";
            OleDbConnection myConnection = new OleDbConnection(connectionString);

            string query = "select * from EMPLOYEE_TABLE";

            OleDbDataAdapter myAdapter = new OleDbDataAdapter(query, myConnection);
            DataSet employeeData = new DataSet();
            myAdapter.Fill(employeeData);

            // Repeat for each table in the DataSet's table collection.
            foreach (DataTable table in employeeData.Tables)
            {
                // Repeat for each row in the table.
                foreach (DataRow row in table.Rows)
                {
                    MessageBox.Show("Employee Number : " + row["EmployeeNumber"].ToString());
                    MessageBox.Show("Name : " + row["Name"].ToString());
                    MessageBox.Show("Address : " + row["Address"].ToString());
                }
            }
        }

// ================================================
        private bool ValidateInputs()
        {
            try
            {
                int employeeNumber = int.Parse(txtEmployeeNumber.Text);
            }
            catch
            {
                // Failed to convert into number..
                MessageBox.Show("Please enter a valid number for employee number.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtEmployeeNumber.Focus();
                txtEmployeeNumber.Select();
                return false;
            }

            return true;
        }
    }
}


شرح کد:
ابتدا شرح این قسمت:
کد:
        private bool ValidateInputs()
        {
            try
            {
                int employeeNumber = int.Parse(txtEmployeeNumber.Text);
            }
            catch
            {
                // Failed to convert into number..
                MessageBox.Show("Please enter a valid number for employee number.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtEmployeeNumber.Focus();
                txtEmployeeNumber.Select();
                return false;
            }

            return true;
        }

این تابع توسط دکمه های اول تا سوم صدا می شود.
کلا کار این تابع این است که بررسی کند ببیند آیا کاربر در تکست باکسی که باید عدد وارد کند آیا عدد وارد کرده یا اشتباها حروف وارد کرده.
نوع آن پرویت است که یعنی توسط متدهای دیگر کلاس فقط قابل صدا زدن است. و خروجی bool دارد که یعنی یا درست برمی گرداند یا نادرست.
کلا باید بدانید داخل هر تابع صدا زده شده وقتی به ریترن می رسیم دیگر ادامه تابع دنبال نمی شود و با ریترن کردن کار تابع خاتمه می یابد.
این تابع اول try می کند (تلاش) برای تبدیل محتوای تکست باکس به عدد. اگر موفق شد می پرد از قسمت کچ و true برمیگرداند و اگر موفق نشود آنگاه قسمت کچ اجرا می شود و فالس برمی گرداند.
این طوری 3 دکمه می فهمند که کاربر درست عمل کرده یا نه.
دکمه چهارم کاری با محتوای تکست باکس ندارد و کارش اینه که تمام خانه های تیبل را چاپ کند.

==========================
حالا می رسیم به کار 3 دکمه اول(یک تا سه):

کار هر سه این است که یک کانکشن اول می سازند و بعد یک کوئری روی کانکشن اعمال می شود.
یعنی کلا این جوری میشه گفت به طور خلاصه که به دیتابیس وصل می شویم و آن را تغییر می دهیم.
در 3 دکمه کوئری ها متفاوت است. insert برای افزودن یک ردیف به تیبل و delete برای حذف یک ردیف و update برای تغییر یک ردیف.
در مورد update و دیلت با where ردیفهای مورد نظر را پیدا می کند. من الان یک تست کردم.
و آن این بود که من قبلا با دکمه اول 3 رکورد(ردیف) با نامبر یکسان در تیبل ایجاد کردم. و بعد با دستور حذف هر 3 حذف شدند .
یعنی اینکه هر چند ردیف که شرط where برقرار باشد روی آن ردیف ها عمل انجام می شود.

========================
در مورد دکمه چهارم باز ابتدا یک کانکشن ساخته می شود.
بعد یک آداپتر و یک دیتا ست ساخته می شود.
آداپتر کوئری را در خود دارد.
بعد آداپتر دیتاست را پر می کند.

As you already know, a DataSet can contain a collection of tables. But in our case, our sql statement will retrieve data from only one table. So, our DataSet will have only one table.
از همین سایتی که سورس را دانلود کردیم:
همان طور که می دانید یک دیتاست می تواند شامل تعدادی تیبل باشد ولی در مثال ما دستور sql باعث بازیابی یک تیبل است پس دیتاست ما فقط یک تیبل دارد.
سالک : این که دیتاست چیست و کجا قرار دارد و تغییرات آن چه اثری روی دیتابیس اصلی واقع در هارد می گذارد.... بحث دارد که بعدا منبع پیدا می کنم نقل می کنم. ولی کتاب آقای هاشمیان هم خوب گفته اگر توانستید یک نگاهی بیاندازید. چون من عادت دارم با کد و امتحان کردنش توضیح بدهم ممکنه حالا حالا سورس مناسبش را پیدا نکنم و تئوری قضیه هم زمین بماند.

بعد با فورایچ ها می آییم دیتاست را می خوانیم.

بعدا با تمرین و توضیحات پیرامون این تمرینات با محیط کار بیشتر مانوس خواهیم شد.
 

saalek110

Well-Known Member
در پستهای قبلی با فایلهای اکسس کار کردیم. و حالا می خواهیم آماده شویم تا با sql server هم تمریناتمان را شروع کنیم.

--------------------------------

با تشکر فراوان از دوست گرامی night11 که این مسئله را به من آموزش داد.

برای استفاده از sql server ئی که همراه ویژوال استودیو 2005( نه ویژوال استودیو 2003 ) نصب می شود که نوعش sqlexpress است باید به ترتیب زیر عمل کرد:

ابتدا شما به full computer name نیاز دارید.
روی my computer در دسکتاپ کلیک راست کنید و properties را بزنید.
بعد در پنجره باز شده به tab مربوطه یعنی computer name بروید.
مطابق عکس زیر:

c4.gif


در عکس بالا عبارتی که جلوی full computer name نوشته شده.... نام کامپیوتر شماست. البته بدون نقطه انتهای آن. یعنی در شکل بالا می شود:
saalek-8bb42bed

مرحله دوم:
به کنترل پنل بروید و ادمینیسترتیو تولز را بزنید.
بعد در پنجره باز شده دیتاسورسز را بزنید.
بعد به tab مربوطه یعنی system dsn بروید.
روی add کلیک کنید.
در پنجره باز شده sql server را انتخاب کنید و finish را بزنید.
در پنجره جدیدی که باز می شود مطابق شکل زیر پرکنید و finish را بزنید.

c5.gif

یعنی نام کامل کامپیوتر بعلاوه یک بک اسلش و بعد عبارت sqlexpress .
در پنجره بعدی که باز می شود دکمه Test Data source را بزنید.
که اگر نوشت tests completed successfully
یعنی که کارتان را درست انجام داده اید و می توانید در ویژوال استودیو با برنامه خود به آن وصل شوید. و اگر نوشت Tests failed یعنی چیزی اشتباه است.
 
آخرین ویرایش:

hani_zi

New Member
سلام سالک جان ،
از راهنمایی هات ممنون ، ولی نمی دونم چرا من با این روش نمی تونم اتصال برقرار کنم ، ارور می ده و میگه پرویدر جت 4.0 رو نمی شناسه ، ولی وقتی از طریق منوی دیتا اتصال برقرار می کنم ارتباط برقرار می شه ، اگه ممکنه راهنماییم کن
با تشکر
 

saalek110

Well-Known Member
محیط کار : سی شارپ 2005
هدف : وصل کردن یک دیتاگرد به یک دیتابیس داخل پوشه data از sql server اکسپرس.
منظور : در پست بعد گفته می شود.

---------------------------------------------
ابتدا یک پروژه ویندوزی باز کنید.
یک dataGridView روی فرم بیاندازید.
از طریق فلش کوچک کنار دیتاگرد و فلشهای شکل زیر پنجره مربوطه را می آوریم.


a3.gif


بعد....


a4.gif


در پنجره بعدی که من عکسش را نگذاشتم دکمه new connection را می زنیم.

به شکل زیر دقت کنید:


a5.gif


حالا من نمی دانم انگولک های من چقدر تاثیر گذاشته ولی این جوری میاد این پنجره برای من. بعدا که ویندوزم را نو کردم عکس حالت دست نخورده را می گذارم.
ولی همان طور که در عکس می بینید وقتی server name را درست وارد کنید و آن کومبوباکس پایین که من با ماوس کلیک کردم را بزنید لیست دیتابیس های موجود می آید. اینها همان ها هستند که در کامپیوتر من در مسیر:
C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data
وجود دارند.
یعنی 4 تا دیتابیس در این پوشه هست. من قبلا با master زیاد ور رفتم پس این بار msdb را انتخاب می کنم. بعدا باید طرز خلق دیتابیس جدید ( چه با کد و چه با ابزارهای بصری) را بگوییم.
در مورد your computer name هم قبلا گفتیم چطور بدست بیاورید. (در همان پست که تنظیمات sql server اکسپرس در کنترل پنل گفته شد.)
بعد انتخاب دیتابیس msdb من دکمه test connection را می زنم که می گوید: test connection succeeded.

بعد انجام این کارها ok را می زنیم تا کار به اتمام برسد و برگردیم به پنجره قبلی یعنی همان (( دیتا سورس کانفیگوریشن ویزارد )) . در آنجا هم next می کنیم و باز page بعد این ویزارد می آید که بخوانید ببینید برای چیه که باز next می کنیم.

در پنجره بعدی که با تاخیر زیادی محتویاتش می آید من tables را انتخاب می کنم.


a6.gif


و finish را می زنیم.

با انجام این کارها یک دیتاست و یک بایندینگ سورس هم به طور اتوماتیک ایجاد میشه.
دکمه اجرا را هم که بزنید هیچی نمی بینید. شاید بخاطر اینکه تیبلی در آن دیتابیس(msdb ) وجود ندارد.
 
آخرین ویرایش:

saalek110

Well-Known Member
حالا از منوی ویو گزینه ((سرور اکسپلورر )) را بزنید.
احتمالا شما هم باید ((دیتا کانکشن)) هایی داشته باشید و یکی مربوط به دیتابیس msdb است.
با زدن + کنار آن گزینه های آن را آشکار کنید.
می بینید که یکی tables است که با زدن + کنار آن می فهمید که تیبلی ندارید.
روی همان tables راست کلیک کنید و add new table را بزنید. (گزینه های دیگر را هم اگر خواستید امتحان کنید بعدا.)
نام ستون از شما می خواهد در قسمتی که باز می شود و بعد نوع فیلد ......


a7.gif


و چیزهای دیگر که پر کنید.
بعد که کارتان تمام شد با زدن ضربدر گوشه محیط کار از شما save و نام می خواهد که بدهید.
حالا دیتابیس msdb دارای یک تیبل است.
حالا می توانید همان کارهایی که در پست قبل برای دیتاگرد را کردید را تکرار کنید و این بار چون تیبلی موجود است موقع اجرای پروژه(و قبل اجرا) در دیتاگرد حداقل نام ستون ها به نمایش در می آید.

البته می دونم این کارها روش درستی نبود و شاید روش درست خیلی ساده تر باشه. ولی برای شروع فکر کنم خوب باشه.

وقتی دوباره دیتاگرد را برایش منبع بسازید دوباره یک دیتاست و یک بایندینگ سورس دیگر ساخته می شود.

اما منظور اصلی من از این 2 پست خسته کننده :
با کلیک راست روی کانکشن خود پراپرتی آن را بگیرید .....


a8.gif


تا در پنجره پراپرتی در قسمت connection string بتوانید کانکشن استرینگ خود را بیابید.



a9.gif



در پستهای بعدی به این (( کانکشن استرینگ )) نیاز داریم. روی آن کلیک و ((کنترل a )) را بزنید تا همش انتخاب بشه و کپی بگیرید.
و دیگه بقیه کارها هیچ فرقی با ارتباط با اکسس نداره.
 
آخرین ویرایش:

saalek110

Well-Known Member
حالا یک پروژه دیگر بسازید و یک دکمه روی فرم و کد زیر داخل دکمه:

کد:
            string my_connectionstring = "[COLOR="Red"]Data Source=.\\sqlexpress;Initial Catalog=msdb;Integrated Security=True[/COLOR];";
            SqlConnection my_connection = new SqlConnection(my_connectionstring);

            my_connection.Open();
            MessageBox.Show("connection successful");
            my_connection.Close();
و using کردن System.Data.SqlClient .
در کد بالا قسمت قرمز همان است که از پست قبل به دست آوردیم. با 2 فرق:

من نام کامپیوتر را حذف کردم و به جاش نقطه گذاشتم(شما هم می توانید این کار را بکنید). یک بک اسلش هم اضافه کردم بخاطر همان قوانین بک اسلش در آدرسها. می توانید به جاش این طوری هم بنویسید:
کد:
string my_connectionstring = @"Data Source=.\sqlexpress;Initial Catalog=msdb;Integrated Security=True;";

این کد میشه اساس ارتباط با کد با sql server اکسپرس. بقیه کدنویسی ها بین oledb و sql مشترکه.
با کوئری هم همه کار میشه کرد .(مثل ایجاد تیبل که ساده است. برای ایجاد دیتابیس هم کوئری اش موجود است ولی نمی دانم اینجا بشود یا نه. بعدا تمرین می کنیم.) ولی من نخواستم اینجا از کوئری استفاده کنم تا پیچیدگی ایجاد نشود.
 
آخرین ویرایش:

saalek110

Well-Known Member
SQLServer2005_SSMSEE

لینک دانلود:
http://download.microsoft.com/downl...c5-bdcb-196a65229461/SQLServer2005_SSMSEE.msi

حجم دانلود : 43 مگا.

شرح از :

Microsoft® SQL Server 2005 Unleashed
Copyright © 2007 by Sams Publishing
800 East 96th Street, Indianapolis, Indiana 46240 USA
Ray Rankins,
Paul Bertucci,
Chris Gallelli,
Alex T. Silverstein,
et al.

SQL Server Management Studio
One of the biggest changes in SQL Server 2005 that you will notice right away if you have
experience with SQL Server 2000 is that SQL Enterprise Manager and Query Analyzer are
no longer provided with SQL Server 2005. They have been replaced by a single integrated
management console called SQL Server Management Studio (SSMS). SSMS is the tool to
use to monitor and manage your SQL Server database engines and databases, as well as
Integration Services, Analysis Services, Reporting Services, and Notification Services across
your entire SQL Server enterprise. Improvements to the SSMS interface over SQL
Enterprise Manager allows database administrators to perform several tasks at the same
time, such as authoring and executing a query, viewing server objects, managing objects,
monitoring system activity, and viewing online help.
SSMS also provides a Visual Studio–like development environment for authoring, editing,
and managing scripts and stored procedures, using Transact-SQL (T-SQL), Multidimensional
Expressions (MDX), XML for Analysis, and SQL Server Mobile Edition. SSMS can
also integrate with source control software such as Visual SourceSafe to allow you to
define and manage your scripts under projects
.​

من نصبش کردم. محتوای دیتابیسهای sql server من که همان اکسپرس هست را نشان می دهد. مثل تیبلها و ......
 
آخرین ویرایش:

saalek110

Well-Known Member
با سلام.
تا اینجا مقدمات کار گفته شد. و شاید بشود گفت که بقیه دیگه تمرین با کلاسهای مختلف است که باید در تاپیک گفته شود.



موضوع دوم :

13 فیلم در این سایت :
SQL Server 2005 Express Edition for Beginners
http://msdn.microsoft.com/vstudio/express/sql/learning/default.aspx

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

به زبان وی بی دات نت است ولی اینها بیشتر با ویزارد ها است و خیلی کم کدنویسی دارد. منظورم اینه که فیلم ها مفید است.
کد:
[B]Introduction[/B]

Learning Video 1: What is a database? 

[B]Designing Tables[/B]

Learning Video 2: Understanding Database Tables and Records 

Learning Video 3: More about Column Data Types and Other Properties 

Learning Video 4: Designing Relational Database Tables 

[B]Database Functions[/B]

 Learning Video 5: Manipulating Database Data

 Learning Video 6: More Structured Query Language

 Learning Video 12: Creating and Using Stored Procedures

 Learning Video 13: Enabling Full-Text Search in your Text Data

[B]Creating and Using Reports[/B]

 Learning Video 10: Getting Started with Reporting Services

 Learning Video 11: Embedding, Packaging and Deploying SQL Server Express Reporting Services

[B]Database Security[/B]

 Learning Video 7: Understanding Security and Network Connectivity

[B]Database Management[/B]

 Learning Video 9: Using SQL Server Management Studio Express

[B]Publishing to the Web[/B]

 Learning Video 8: Connecting your Web Application to SQL Server 2005 Express Edition
 
آخرین ویرایش:

saalek110

Well-Known Member
منبع:
http://yosafy.blogsky.com/Printable.bs?PostID=179
----------------------------------------------------------------

ADO / ADO.net
ارتباط به منابع داده در ADO.NET بمنظوراتصال به یک منبع داده ، می بایست در ابتدا یک Net Data Provider . ، انتخاب گردد . Data Provider ، کلاس های لازم بمنظور اتصال به یک منبع داده ، خواندن اطلاعات ، ویرایش ، بهنگام سازی و انجام عملیات متفاوت بر روی داده ها را ارائه می نماید . در این مقاله به تشریح انواع Data Provider پرداخته و با نحوه انتخاب مناسب آنان بمنظور استفاده در برنامه ها ، آشنا خواهیم شد .

NET Data Provider . چیست؟
NET Data Provider .، یک Component کلیدی ارائه شده بهمراه معماری ADO.NET بوده که امکان ارتباط بین یک منبع داده و یک Component ، یک سرویس وب XML و یا یک برنامه را فراهم می نماید. یک NET Data Provider .، امکان اتصال به منبع داده ، بازیابی داده ها ، انجام عملیات بر روی داده ها و بهنگام سازی منبع داده را فراهم می نماید. بهمراه فریمورک دات نت ، Provider های زیر ارائه شده است :
SQL Server .NET Data Provider

OLE DB .NET Data Provider
در آینده برای سایر منابع داده ، NET Data Provider . مربوطه ایجاد و در دسترس عموم برنامه نویسان قرار خواهد گرفت. هر Provider ، مسئولیت پیاده سازی کلاس های عمومی ADO.NET را برعهده خواهد داشت . دستاورد رویکرد فوق ، ارتباط با منابع داده متفاوت با استفاده از یک روش یکسان از طریق محیط های برنامه نویسی خواهد بود .

کلاس های NET Data Provider .
ADO.NET ، از NET Data Provider . ، بمنظور ارتباط به منبع داده ، بازیابی ، عملیات برروی داده ها و بهنگام سازی منبع داده استفاده می نماید . هر Provider ، بگونه ای طراحی می گردد که دارای حجم اندکی بوده و یک لایه حداقل بین کد های نوشته شده و منبع داده را ایجاد نمایند . ( افزایش کارائی بدون قربانی نمودن پتانسیل ها !)

فریمورک دات نت ، دارای دو Data Provider است :

SQL Server .NET . امکان دستیابی بهینه به SQL Server 2000 و بانک های اطلاعاتی SQL Server 7.0 را فراهم می نماید. بدین منظور می بایست از namespace با نام System.Data.Sqlclient بهمراه برنامه ها، استفاده گردد . Provider فوق، نسبت به OLE DB .NET Data Provider ، دارای کارآئی بمراتب بیشتری است (برای ارتباط با منبع داده از لایه های اضافه دیگر نظیر: OLE DB و یا ODBC استفاده نمی گردد ).

OLE DB .NET . امکان دستیابی به SQL Server 6.5 و یا نسخه های قبل از آن ، بانک های اطلاعاتی نظیر اوراکل ، Sybase ، DB2/400 و اکسس ماکروسافت را فراهم می نماید . بمنظور استفاده از Provider فوق ، می بایست از namespace با نام System.Data.OleDb بهمراه برنامه ها ، استفاده گردد .

علاوه بر موارد فوق ، ماکروسافت در صدد ارائه یک ODBC .NET Data Provider برای دستیابی به سایر منابع داده است .


ADO.NET ، از یک مدل شی گراء در رابطه با NET Data Providers . استفاده می نماید .
در SQL Server .NET Data Provider ، اسامی کلاس ها با پیشوند Sql آغاز می گردد . مثلا" کلاس Connection ، SqlConnection نامیده می شود.
در OLE DB .NET Data Provider ، اسامی کلاس ها با پیشوند OleDb ، آغاز می گردد . مثلا" کلاس Connection دارای نام OleDbConnection ، می باشد.
چهار کلاس اساسی زیر، سهم عمده ای در شکل دهی یک NET Data Provider . را برعهده دارند .
XxxConnection . کلاس فوق ، بمنظور ایجاد یک Connection به یک منبع داده خاص استفاده می گردد . مثلا" کلاس SqlConnection ، باعث اتصال به منابع داده SQL Server ، می گردد .

XxxCommand . کلاس فوق ، بمنظور اجرای یک دستور از طریق یک منبع داده ، استفاده می گردد . مثلا" کلاس SqlCommand ، امکان اجرای Stored Procedure و عبارات SQL در رابطه با یک منبع داده SQL Server ، را فراهم می نماید .

XxxDataReader . از کلاس فوق ، بمنظور خواندن اطلاعات از یک منبع داده بصورت فقط خواندنی و Forward-only ، استفاده می گردد . مثلا" کلاس SqlDataReader ، امکان خواندن سطرهائی از جداول در رابطه با یک منبع داده SQL Server را فراهم می نماید . کلاس فوق، بعنوان خروجی متد ExecuteReader از کلاس XxxCommand ، برگردانده می شود. ( اغلب بعنوان ماحصل اجرای یک عبارت SELECT SQL )

XxxDataAdapter . کلاس فوق ، از اشیاء XxxCommand استفاده تا یک DataSet را حاوی داده های مورد نظر نماید. در این راستا ، امکان بهنگام سازی اطلاعات نیز فراهم می گردد . مثلا" کلاس SqlDataAdapter ، امکان مدیریت ارتباط بین یک Dataset و داده های ذیربط در یک منبع داده SQL Server را فراهم می نماید.


نحوه انتخاب یک Data Provider

انتخاب یک NET Data Provider . مناسب برای یک برنامه، بستگی به نوع منبع داده ئی دارد که قصد ارتباط با آن وجود دارد.

نحوه مراجعه به یک NET Data Provider .


با استفاده از Solution Explorer در ویژوال استودیو دات نت ، می توان مدیریت مراجعات به اسمبلی هائی که مسئولیت NET Data Provider . را بر عهده دارند ، انجام داد . اسمبلی System.Data.dll ( بصورت فیزیکی یک فایل DLL است ) مسئولیت پیاده سازی SQL Server .NET Data Provider و OLE DB .NET Data Provider را از طریق Namespace های System.Data.SqlClient و System.Data.OleDb ، بر عهده داشته و اسمبلی System.Data.Odbc.dll چنین رسالتی را در رابطه با ODBC .NET Data Provider ، انجام خواهد داد . اسمبلی فوق ، در زمان نصب ویژوال استودیو دات نت ، نصب نخواهد شد . برای دریافت اسمبلی فوق ، می توان از طریق آدرس : http://msdn.microsoft.com/download ، اقدام و پس از کلیک نمودن بر روی NET Framework .، گزینه ODBC .NET Data Provider را انتخاب کرد . بدین ترتیب، زمینه دریافت فایل فوق فراهم می گردد . پس از دریافت اسمبلی فوق ، می توان بصورت دستی (Manaually) در یک پروژه به آن مراجعه و از ODBC .NET Data Provider فوق ، استفاده کرد .

SQL Server .NET Data Provider
Provider فوق ، لایه ای نازک بین یک برنامه و SQL Server ایجاد می نماید. با توجه به اینکه این Provider ، از پروتکل اختصاصی خود ( TDS: Tabular Data Stream ) بمنظور ارتباط با یک سرویس دهنده SQL استفاده می نماید ، حجم آن اندک و دستیابی به سرویس دهنده SQL مستقیما" و بدون استفاده از لایه های اضافه دیگر ، انجام می گیرد . بدین ترتیب کارائی و قابلیت توسعه سیستم ، بهبود پیدا خواهد کرد .

OLE DB .NET Data Provider
Provider فوق ، بمنظور اتصال به یک منبع داده از OLE DB و COM بصورت ذاتی استفاده می نماید . بنابراین می بایست از یک OLE DB Provider استفاده گردد که خود از OLE DB .NET Data Provider استفاده می نماید . بمنظور استفاده از OLE DB .NET Data Provider ، می بایست نوع Provider بصورت یک رشته ، مشخص گردد . واژه Provider در رشته فوق بیانگر نوع OLE DB منبع داده ئی است که به آن متصل می گردیم .
مثلا" "Provider = MSDAORA" ، شما را به یک بانک اطلاعاتی اوراکل متصل می نماید . در زمانیکه از SQL Server .NET Data Provider ، استفاده می شود ، نیازی به استفاده از واژه Provider نخواهد بود ( فرض می شود که SQL Server 7.0 و یا قبل از آن باشد) . جدول زیر نمونه هائی در این زمینه را نشان می دهد :

مثال
منبع داده

Provider = SQLOLEDB;Data Source = Tehran ;Initial
Catalog = pubs;User ID = sa ; Password = 999; SQL Server 6.5

Provider = MSDAORA ; Data Source = ORACLE817 ; User
ID = OLEDB ; Password = OLEDB ; Oracle server

Provider = Microsoft.Jet.OLEDB.4.0;
Data Source = C:MydbFirstdb.mdb ;
Microsoft Access database


ODBC .NET Data Provider
Provider فوق ، بمنظور اتصال به یک منبع داده از توابع API مربوط به ODBC بصورت ذاتی استفاده می نماید. این Provider ، بصورت یک اسمبلی مجزاء و با نام System.Data.Odbc.dll ، پیاده سازی شده و بصورت پیش فرض در تمپلیت های پروژه در ویژوال استودیو دات نت ، انتخاب نشده و می بایست بصورت دستی به آن مراجعه گردد .

مثال
Provider/Driver
منبع داده

Driver ={Microsoft ODBC for Oracle };
Server = ORACLE817;UID=OLEDB;
PWD = OLEDB; ORA ODBC Oracle Server

Driver = {Microsoft Access Driver (*.mdb)};
DBQ = C:MydbFirstdb.mdb ; Jet ODBC Microsoft Access database

خلاصه
برای انتخاب یک NET Data Provider . ، موارد زیر پیشنهاد می گردد :

اگر منبع داده از نوع SQL Server 7.0 و یا SQL Sever 2000 می باشد ، SQL Server .NET Data Provider انتخاب گردد .
اگر منبع داده از نوع SQL Server 6.5 و قبل از آن باشد ، OLE DB .NET Data Provider انتخاب گردد .
اگر منبع داده شامل هر نوع منبع داده نامتجانس باشد که امکان دستیابی به آن از طریق OLE DB Provider ، وجود داشته باشد ،
از OLE DB .NET Data Provider استفاده گردد .

اگر منبع داده شامل هر نوع منبع داده نامتجانس باشد که امکان دستیابی به آن از طریق ODBC driver ، وجود داشته باشد ،
از ODBC .NET Data Provider استفاده گردد .
=================================


مقایسه ADO و ADO.NET
شرکت مایکروسافت در ویژوال بیسیک ورژن 3 که در سال 1993 ارائه داد از Jet که هسته اصلی MS Access بود برای ایجاد ارتباط با بانکهای اطلاعاتی استفاده نمود البته برای استفاده بهتر برنامه نویسان ، Jet را در غالب مجموعه Object هائی تحت عنوان (Data Access Object ) آورد. در نسخه 4 و 5 ویژوال بیسک ، ماکروسافت روشی دیگر برای ارتباط با بانکهای اطلاعاتی تحت عنوان Remote Data Object = RDO را مطرح ساخت این روش برای برنامه نویسی Client / Server روش مناسبی بود.
در دوم سپتامبر سال 1998 وقتی ماکروسافت ویژوال بیسیک ورژن 6 را ارائه داد روش جدیدی تحت عنوان ( Activex Data Object ) ADO را مطرح ساخت در این روش که پایه و اساس آن OLEDB بود ماکروسافت بر خلاف DAO و RDO که ساختاری پیچیده و سلسله مراتبی داشتند، از ساختاری ساده و مجزا ( غیر سلسله مراتبی ) استفاده کرد و در واقع ADO هم شامل Object هائی است که برنامه نویس بتواند از آنها برای ایجاد ارتباط با بانکهای اطلاعاتی و انجام عملیات روی آنها استفاده کند و در تاریخ 13 February سال 2002 که ماکروسافت نسخه نهائی Visual Basic.Net را ارائه داده روشی جدید برای کار با بانکهای اطلاعاتی تحت عنوان ADO.Net را آورده است. این نسخه از ویژوال بیسیک برخلاف نسخه‎های قبل بطور کامل مباحث OOP را پشتیبانی می‎کند ( FULL OOP ) در واقع ADO.Net هم مانند ADO و RDO و ADO شامل ساختاری برای ارتباط و انجام عملیات روی بانکهای اطلاعاتی است. ADO.net همانند RDO و DAO و برخلاف ADO دارای ساختار سلسله مراتبی می‎باشد. در این مقاله می‎خواهیم به مقایسه ADO و ADO.net بپردازیم. ADO در ورژنهای مختلفی در این چند سال اخیر به بازار آمده است با آمدن SQL Server 2000 ورژن جدید ADO یعنی ورژن 2.6 از این محصول ارائه شد و اکنون هم ADO 2.6 در سایت ماکروسافت قابل Download می‎باشد.
آخرین ورژن ADO شامل 9 تا Object است که عبارتند از :
Connection
Command
Recordset
Parameter
Field
Error
Property
Record
Stream
آبجکت Connection امکان ارتباط با Data Source که شامل بانک اطلاعاتی است را فراهم می‎سازد. بعنوان مثال اگر بخواهیم از آبجکت Recordset برای اضافه و یا حذف و یا تغییر در محتوای رکوردی استفاده کنیم این آبجکت از Connection برای ایجاد ارتباط با بانک اطلاعاتی مثلاً SQL Server استفاده می‎کند اما همانطور که گفته شد و در شکل ملاحظه می‎شود ساختار آبجکتهای ADO بصورت سلسله مراتبی نیست و می‎‎توان مثلا Recordset ای ایجاد نمود که مستقل از آبجکت Connection بتواند با بانک اطلاعاتی ارتباط برقرار نماید.


در ADO علاوه بر آبجکتها، چهار Collection هم دیده می‎شود که عبارتند از :
Parameters
Fields
Properties
Errors
که هرکدام از آنها شامل آبجکتهائی از همان نوع هستند بعنوان مثال ساختاری که برای Recordset کشیده شده بیان کننده آن است که این آبجکت شامل Collection های Fields و Properties بوده و مثلاً Collection مربوط به Fields شامل آبجکتهای فیلد است.
آبجکت فیلد اطلاعاتی را راجع به یک ستون از Recordset در خود نگه داشته است.

در ADO آبجکت Command هم وجود دارد که از آن می‎توان برای اجرای یک فرمان SQL استفاده نمود البته بهترین روش برای اجرای Stored Procedure نیز استفاده از متد Execute مربوط به همین آبجکت است .
بعنوان مثال :
Dim cn As New ADODB.Connection
Dim cmd As New ADODB.Command
Dim rs As New ADODB.Recordset

cn.Open " Provider = sqloledb ; Data Source=serverName ; Initial Catalog = northwind ", "sa" , "password"
cmd.ActiveConnection = cn
cmd.CommandText = "sp_who"
cmd.CommandType = adCmdStoredProc

Set rs = cmd.Execute
Debug.Print rs(0)
rs.Close
از آبجکت Parameter هم برای مشخص کردن مقادیر پارامترهای ورودی یک ‌Stored Procedure استفاده می‎کنیم.
آبجکت Property برای استفاده از Dynamic Property استفاده می‎شود که Property هایی هستند که وابسته به Provider بوده و استاندارد نیستند .
از Record برای دسترسی به یک سطر از Recordset و ویژگیهای مربوط به آن سطر استفاده می‎کنیم .و آبجکت Stream هم به منظور ذخیره و بازیابی اطلاعات بصورت باینری در یک فیلد از Record در نظر گرفته شده است.
تا اینجا باساختار ADO آشنا شدیم حال به تشریح ADO.net می‎پردازیم .
ADO.Net مجموعه‎ای از Class های Interface ها و دستوراتی جهت مدیریت و کار با بانکهای اطلاعاتی است. در بحث Net . مجموعه‎ای از Class های مربوط به هم در یک غالب تحت عنوان ‌Name Space ارائه شده است Net. شامل تعدادی Name Space است که در غالب .Net Framework قرار دارد. تمام ساختار ‌ADO.net در چهار NameSpace قرار دارد که عبارتند از :
System.Data.SqlClient.
System.Data.OleDb.
System.Data.Odbc.
System.Data.
اگر بخواهیم از بانکهای SQL Server استفاده کنیم System.Data.SqlClient بهترین انتخاب است در این NameSpace امکاناتی فراهم شده تا بتوانیم Application های بنوسیم و در آنها با SQL Server ارتباط برقرار نمائیم بطوریکه برنامه‎ها از Performance بالائی برخوردار باشند.
در صورتی که کاربر بخواهد از بانکهای رابطه ‎ای دیگر نظیر Oracle استفاده کند میتواند از System.Data.OleDb بهره گیرد.
System.Data.Odbc برای ارتباط با بانکهای اطلاعاتی از طریق ODBC میباشد System.Data هم شامل Provider های خاص نظیر DataSet و DataTable است. ADO.net نیز شامل Object ها و Collection هائی است که از مهمترین آنها می‎توان موارد ذیل را شمرد:
OleDBConnection
OleDBCommand
OledbDataReader
OleDBDataAdapter
SelectCommand
InsertCommand
UpdateCommand
DeleteCommand
DataTable
DataRelation

OleDBConnection آبجکتی است شبیه به آبجکت Connection در ‌ADO ، که امکان ایجاد ارتباط با بانک را فراهم می‎سازد این آبجکت متدهایی برای اجرای فرامین SQL نیز داراست .OleDBCommand هم مشابه آبجکت Command در ‌ADO می‎باشد.
از این آبجکت نیز برای اجرای Stored Procedure و اجرای فرامین SQL استفاده می‎شود. آبجکت بعد OledbDataReader است که برای گرفتن اطلاعات از ‌Database استفاده می‎شود. البته لازم به ذکر است Resultset ای که با این روش ساخته می‎شود بصورت ReadOnly و Forwardonly می‎باشد. OleDBDataAdapter آبجکت جدیدی در Ado.net است که خود شامل چهار آبجکت برای انجام فرامین SQL می‎باشد که عبارتند از :
SelectCommand
InsertCommand
UpdateCommand
DeleteCommand
که به ترتیب برای واکشی اطلاعات، اضافه نمودن اطلاعات جدید به داخل بانک ، به هنگام سازی اطلاعات و حذف اطلاعات استفاده می‎شود. این آبجکت به همراه آبجکت Dataset استفاده می‎شود و برای پرکردن Recordset موجود در Dataset بکار می‎رود.

آبجکت بعدی Dataset است که مهمترین آبجکت در Ado.net می‎باشد این آبجکت شامل دو Collection به نام های ‌DataTables و DataRelations است. همانطور که می‎دانید در ADO هم آبجکت Recordset داشتیم اینجا مجموعه‎ای از Recordset ها در داخل یک DataTables نگه داشته می‎شود و می‎توان بین DataTable های مختلف رابطه نیز ایجاد نمود که این روابط هم داخل یک مجموعه‎ای با نام DataRelations نگه داشته می‎شود. در واقع DataTable در ADO.net معادل همان RecordSet در ADO می‎باشد.
 
آخرین ویرایش:
ارتباط با access یا Sql Server 2005 - مشکل با کلمات فارسی

با سلام به همه دوستان
من چطوری میتونم اطلاعاتم رو توی access یا Sql server به صورت فارسی ذخیره کنم ، طوری که با یه فیلد دوباره قابل بازیابی باشه ؟؟
زبانی که کار میکنم 2005#c هستش
 
به نام او::

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

در سی شارپ باید دو فایل باپسوند mdf و ldf رو بسازم.من مشکلم سر همین دو تا فایله .نمیدونم که چیه و باید چیکارشون کنم.
 

saalek110

Well-Known Member
با سلام.
وقتی در هارد به پوشه:
C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data
بروید یک سری فایل که هر دو تا یک نام دارند و هر جفت با پسوند های mdf و ldf هستند مشاهده می کنید.
هر جفت فایل تا آنجا که من می دانم یک دیتابیس است. و تیبل ها درون آنها خلق می شوند.

خوب شما بدون ابزار فقط این جفت فایلها را در هارد می بینید و می توانید با کد نویسی با سی شارپ یا زبان دیگر در آنها تیبل خلق کنید و رکورد اینسرت کنید.
ولی می توانید ابزار بصری برای دیدن داخل این فایلها(تیبلها و غیره) داشته باشید.

برای ((sql server اکسپرس )) که همراه ویژوال استودیوی 2005 نصب می شود در پستهای قبلی من یک نرم افزار با حجم 43 مگا برای دانلود معرفی کردم. ولی اگر با sql server دو هزار یا 2005 کار می کنید به احتمال زیاد خودش این ابزار را دارد.
البته این که لازم باشه داخل دیتابیس ها یعنی این جفت فایلها را با این ابزار ببینید یا نیازی به دیدن با این ابزار نباشه بحث دیگری است و خودتان فکر کنید نیاز دارید به این ابزار یا نه.

اما پاسخ به سئوالات شما:
در مورد سئوال اول شما :
من ابتدا با اون ابزار 43 مگائی یک دیتابیس ساختم به نام saalek_database . اینکه sql server من الان چیه فکر نمی کنم فرقی داشته باشد.
بعد در سی شارپ 2005 با کد زیر(که در رویداد کلیک باتون قرار دادم) و بالای فایل هم این using را اضافه کردم:
کد:
using System.Data.SqlClient;
کد داخل رویداد کلیک باتون:
کد:
            string my_connectionstring = "Data Source=.\\sqlexpress;Initial Catalog=saalek_database;Integrated Security=True;";
            SqlConnection my_connection = new SqlConnection(my_connectionstring);

            SqlCommand mysqlCommand = my_connection.CreateCommand();
            mysqlCommand.CommandText =  "CREATE TABLE Person (personID int NOT NULL PRIMARY KEY(personID),FirstName varchar(15),LastName varchar(15),Age int)";
            my_connection.Open();
            MessageBox.Show("connection successful");
            int cmdResult;
            cmdResult = mysqlCommand.ExecuteNonQuery();
            my_connection.Close();
توانستم یک تیبل داخل این دیتابیس که ایجاد کرده بودم بسازم.

در مورد سئوال دوم شما هم فکر کنم در جملات بالا جواب داده شد. باز هم تکرار می کنم:
در اکسس دیتابیس یک فایل با پسوند mdb است. یعنی یک تک فایل. در sql server جفت فایلی داریم با پسوندهایی که در بالا گفته شد.
دیتابیس از نگاهی داخل هارد همین تک فایل یا جفت فایل است. ولی از نظر کاری من تشبیه می کنم به زمینی که شما می خرید تا در آن ساختمانهایی بسازید. هر تیبل یک ساختمانی است که شما در این زمین(دیتابیس) می سازید. همه زمین شما در هارد یک تک فایل یا جفت فایل می باشد.
بعدا در هر تیبل می توانید رکوردها(سطرها)یی اضافه(insert کوئری آن است) کنید که حکم طبقات ساختمان شما را دارد. هر طبقه(رکورد) با باقی طبقات ساختار یکسانی دارد. مثلا اگر طبقه اول تک خوابه است همه طبقات تک خوابه هستند. یعنی وقتی تیبل می سازید شما تعداد فیلدها و نوع فیلدها را هم مشخص می کنید. و موقع اینسرت با همان الگو فقط می توانید رکورد اضافه کنید.
 
به نام او::
خوب من ميخوام كه يك جدول درست كنم.فرض كنيد ميخوام برنامه اي بنويسم كه در هنگام نصب مياد و ديتابيس ميسازه اونم در پوشهاي كه برنامه نصب شده .حالا ميخوام بدونم اين ديتا بيس ساختن با اون ديتابيس ساختن يكيه؟
منظورم اينه كه آيا بايد اون دو فايل رو خودم ايجاد كنم يا نه؟
 
آخرین ویرایش:
به نام او::

من ميخوام برنامه اي بنويسم كه ناك بنك اطلاعاتي رو بگيره و يك دكمه داشته باشه كه وقتي روي دكمه كليك شد بانك اطلاعاتيو جدول رو بسازه.

اگه دوستان لطف كنن همچين برنامه كوچولويي رو برايمن آماده كنن فكر كنم مابقي مشكلاتم رو ميتونم با ديدن سورسش حل كنم.
 

saalek110

Well-Known Member
http://msdn.microsoft.com/en-us/library/aa258257(SQL.80).aspx
برای sql server 2000 است برای 2005 سرچ کنید.


در آدرس بالا کوئری ساخت دیتابیس را داریم.
در اون نرم افزار که دیتابیس می سازد هم کوئری ساخت دیتابیس را می دهد که این بود کوئری:(نام دیتابیس را من rr خواسته بودم.)
من با چند تلاش نتوانستم کوئری های سایت یا کوئری زیر را اجرا کنم. خطا میداد.
بعد اینکه کوئری را اجرا کردید و در پوشه دیفالت(مسیرهای داخل کوئری) توانستید دیتابیس بسازید فکر کنم بشه مسیر جاری اپلیکیشن را جایگزین کرد تا در پوشه برنامه دیتابیس ساخته بشود. و شاید بعدا نیاز باشه تا sql server روی این پوشه هم تنظیم شود. البته اطلاعات ندارم و فقط جهت احتیاط و یادآوری گفتم. شما اگر در هر قسمتی به نتیجه رسیدید اینجا بنویسید تا همه استفاده کنند.

کد:
CREATE DATABASE [rr] ON  PRIMARY 
( NAME = N'rr', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\rr.mdf' , SIZE = 2048KB , FILEGROWTH = 1024KB )
 LOG ON 
( NAME = N'rr_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\rr_log.ldf' , SIZE = 1024KB , FILEGROWTH = 10%)
GO
EXEC dbo.sp_dbcmptlevel @dbname=N'rr', @new_cmptlevel=90
GO
ALTER DATABASE [rr] SET ANSI_NULL_DEFAULT OFF 
GO
ALTER DATABASE [rr] SET ANSI_NULLS OFF 
GO
ALTER DATABASE [rr] SET ANSI_PADDING OFF 
GO
ALTER DATABASE [rr] SET ANSI_WARNINGS OFF 
GO
ALTER DATABASE [rr] SET ARITHABORT OFF 
GO
ALTER DATABASE [rr] SET AUTO_CLOSE OFF 
GO
ALTER DATABASE [rr] SET AUTO_CREATE_STATISTICS ON 
GO
ALTER DATABASE [rr] SET AUTO_SHRINK OFF 
GO
ALTER DATABASE [rr] SET AUTO_UPDATE_STATISTICS ON 
GO
ALTER DATABASE [rr] SET CURSOR_CLOSE_ON_COMMIT OFF 
GO
ALTER DATABASE [rr] SET CURSOR_DEFAULT  GLOBAL 
GO
ALTER DATABASE [rr] SET CONCAT_NULL_YIELDS_NULL OFF 
GO
ALTER DATABASE [rr] SET NUMERIC_ROUNDABORT OFF 
GO
ALTER DATABASE [rr] SET QUOTED_IDENTIFIER OFF 
GO
ALTER DATABASE [rr] SET RECURSIVE_TRIGGERS OFF 
GO
ALTER DATABASE [rr] SET AUTO_UPDATE_STATISTICS_ASYNC OFF 
GO
ALTER DATABASE [rr] SET DATE_CORRELATION_OPTIMIZATION OFF 
GO
ALTER DATABASE [rr] SET PARAMETERIZATION SIMPLE 
GO
ALTER DATABASE [rr] SET  READ_WRITE 
GO
ALTER DATABASE [rr] SET RECOVERY SIMPLE 
GO
ALTER DATABASE [rr] SET  MULTI_USER 
GO
ALTER DATABASE [rr] SET PAGE_VERIFY CHECKSUM  
GO
USE [rr]
GO
IF NOT EXISTS (SELECT name FROM sys.filegroups WHERE is_default=1 AND name = N'PRIMARY') ALTER DATABASE [rr] MODIFY FILEGROUP [PRIMARY] DEFAULT
GO
 

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

بالا