آموزش ارتباط با اکسس (Access) در سی شارپ Csharp


قراره که یه دفتر چه تلفن رو به دیتابیس اکسس وصلش کنیم

اول اینو تو فرم بسازید و نام هر تکست باکسم از تو سورس ببینید و تغییرش بدید اما دکمه ها

رو همون باتن 1 تا باتن 4 بذارید بمونه



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


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

کد:

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 برقرار باشد روی آن ردیف ها عمل انجام می شود.

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