บทความนี้จะเตรียมความพร้อมก่อนการใช้งานลินคิวเต็มรูปแบบ โดยเป็นส่วนอยู่เบื้องหลัง เชื่อมต่อระหว่าง Business Layer กับ Database Layer เรามาเริ่มด้วยการสร้างดาต้า โมเดลกันก่อนครับตามตัวอย่างนี้
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | //Company.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace PlanningManagement2.Models { [Serializable] public class Company { //Company ID private int _companyId; public int CompanyID { get { return _companyId; } set { _companyId = value; } } //Company Name private string _companyName; public string CompanyName { get { return _companyName; } set { _companyName = value; } } } } |
หลังจากนั้นเราก็มาสร้างไฟล์ที่เป็น Business Layer ดังนี้
//CompanyBAL.cs
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
using
System.Configuration;
using
System.Data;
using
System.Data.SqlClient;
using
PlanningManagement2.Models;</code></code>
namespace
PlanningManagement2.BAL
public
class
CompanyBAL
{
private
string connectionString;
public
CompanyBAL()
{
connectionString = ConfigurationManager.ConnectionStrings
"PlanningConnection"
].ConnectionString;
}
public
CompanyBAL(string connectionString)
{
this
.connectionString = connectionString;
}
public
void
Insert(Company company)
{
string sql=
"Insert Into Company(Company_ID, Company_Name) Values(@CompanyID, @CompanyName)"
;
SqlConnection conn =
new
SqlConnection(connectionString);
SqlCommand cmd =
new
SqlCommand(sql, conn);
cmd.CommandType = CommandType.Text;
//Add Parameter...
cmd.Parameters.Add(
"@CompanyID"
, SqlDbType.Int).Value = company.CompanyID;
cmd.Parameters.Add(
"@CompanyName"
, SqlDbType.NVarChar).Value = company.CompanyName;
//Execute Command...
try
{
conn.Open();
cmd.ExecuteNonQuery();
}
catch
(SqlException err)
{
throw
new
ApplicationException(
"Insert command has error..."
+ err.ToString());
}
finally
{
conn.Close();
}
}
public
void
Update(Company company)
{
string sql =
"Update Company SET Company_Name=@CompanyName Where Company_ID=@CompanyID"
;
SqlConnection conn =
new
SqlConnection(connectionString);
SqlCommand cmd =
new
SqlCommand(sql, conn);
cmd.CommandType = CommandType.Text;
//Add Parameter...
cmd.Parameters.Add(
"@CompanyID"
, SqlDbType.Int).Value = company.CompanyID;
cmd.Parameters.Add(
"@CompanyName"
, SqlDbType.NVarChar).Value = company.CompanyName;
//Execute Command...
try
{
conn.Open();
cmd.ExecuteNonQuery();
}
catch
(SqlException err)
{
throw
new
ApplicationException(
"Update command has error..."
+ err.ToString());
}
finally
{
conn.Close();
}
}
public
void
Delete(Company company)
{
string sql =
"Delte From Company Where Company_ID=@CompanyID"
;
SqlConnection conn =
new
SqlConnection(connectionString);
SqlCommand cmd =
new
SqlCommand(sql, conn);
cmd.CommandType = CommandType.Text;
//Add Parameter
cmd.Parameters.Add(
"@CompanyID"
, SqlDbType.Int).Value = company.CompanyID;
try
{
//Execute Delete Command
conn.Open();
cmd.ExecuteNonQuery();
}
catch
{
//Has Error
throw
new
ApplicationException(
"Delete command has error..."
);
}
finally
{
conn.Close();
}
}
public
List Select()
{
string sql =
"Select * From Company Order By Company_ID"
;
SqlConnection conn =
new
SqlConnection(connectionString);
SqlCommand cmd =
new
SqlCommand(sql, conn);
cmd.CommandType = CommandType.Text;
List companys =
new
List();
try
{
conn.Open();
SqlDataReader reader = cmd.ExecuteReader();
while
(reader.Read())
{
companys.Add(
new
Company()
{
CompanyID = (
int
)reader[
"Company_ID"
],
CompanyName = (string)reader[
"Company_Name"
]
}
);
}
return
companys;
}
catch
(SqlException err)
{
throw
new
ApplicationException(
"Search command has error..."
+ err.ToString());
}
finally
{
conn.Close();
}
}
}
}
จากโค้ดด้านบนรับรองได้ว่า เหมาะกับการใช้งานลินคิวเบื้องต้น และใช้งานได้จริงแน่นอนครับ ปกติตามที่เขามีตัวอย่างและสอนจะใช้ การสร้างแบบอัตโนมัตินะครับ แต่สำหรับผม การเขียนโค้ดทั้งหมดนั้นยืดหยุ่นกว่ามาก และเข้าใจง่ายด้วย
หลังจากนี้เราก็เตรียมพร้อมสำหรับ การใช้งานจริงใน Windows Application กันแล้วในบทต่อๆ ไปจะยกตัวอย่างการใช้โค้ดบน Windows Form เพื่อเรียกใช้เมธอร์ดที่เราเขียนไว้นี้
ref : http://www.codemarts.com/2010/05/c-for-access-database-with-ado-net/
No comments:
Post a Comment