Professional Documents
Culture Documents
sql
create database QLSach
go
use QLSach
go
create table NhaXB
(
MaNXB varchar(6) primary key,
TenNXB nvarchar(20) not null,
DiaChi nvarchar(30) null
)
go
insert into NhaXB values('NXB001',N'NXB Kim ng',null)
insert into NhaXB values('NXB002',N'NXB Gio Dc',null)
insert into NhaXB values('NXB003',N'NXB Tr',null)
go
create table Sach
(
MaSach int identity(1,1) primary key,
TenSach nvarchar(20) not null,
MaNXB varchar(6) foreign key references NhaXB(MaNXB),
SoLuong int not null
)
go
insert into Sach values(N'Lp trnh C#','NXB002',50)
insert into Sach values(N'Doraemon','NXB001',30)
insert into Sach values(N'Lp trnh Java','NXB003',20)
go
Select MaSach,TenSach,TenNXB,SoLuong from Sach,NhaXB where Sach.MaNXB=NhaXB.MaNXB
go
Select MaNXB from NhaXB where TenNXB=N'NXB Tr'
go
Sach.cs
using
using
using
using
System;
System.Collections.Generic;
System.Linq;
System.Text;
namespace QLSach
{
class Sach
{
private int masach;
private string tensach;
private string manxb;
private int soluong;
public
public
public
public
}
NhaXB.cs
using
using
using
using
System;
System.Collections.Generic;
System.Linq;
System.Text;
namespace QLSach
{
class NhaXB
{
private string manxb;
private string tennxb;
private string diachi;
DBAccess.cs
using
using
using
using
using
using
using
using
System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Data.SqlClient;
System.Configuration;
System.Windows.Forms;
System.Data;
namespace QLSach.DataAcces
{
class DBAccess
{
SqlConnection con;
SqlDataAdapter da;
SqlCommand cmd;
public DBAccess()
{
KetNoi();
}
public void KetNoi()
{
String connectStr =
ConfigurationManager.ConnectionStrings["QLS"].ConnectionString;
con = new SqlConnection();
try
{
con.ConnectionString = connectStr;
//con.Open();
}
catch (SqlException ex)
{
MessageBox.Show(ex.Message + "Li");
}
}
public DataTable getDS(string sql)
{
DataTable table = new DataTable();
da = new SqlDataAdapter(sql, con);
da.Fill(table);
return table;
}
public bool ExecuteNonQueryPara(string sql, string[] parameters, object[] value)
{
int num = 0;
try
{
if (con.State == ConnectionState.Closed)
{
con.Open();
}
cmd = new SqlCommand(sql, con);
SqlParameter p;
for (int i = 0; i < parameters.Length; i++)
{
p = new SqlParameter(parameters[i], value[i]);
cmd.Parameters.Add(p);
}
num = cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
MessageBox.Show("Li: " + ex.Message);
}
if (num > 0)
return true;
else
return false;
}
public bool kiemtraTontai(string tableName, string field, string value)
{
string query = "Select count (*) from " + tableName + " where " + field +
"='" + value + "'";
cmd = new SqlCommand(query, con);
int num = 0;
try
{
if (con.State == ConnectionState.Closed)
{
con.Open();
}
num = (int)cmd.ExecuteScalar();
con.Close();
}
catch (Exception ex)
{
MessageBox.Show("Loi: " + ex.Message);
}
if (num > 0)
return true;
else
return false;
}
SachBO.cs
using
using
using
using
using
using
System;
System.Collections.Generic;
System.Linq;
System.Text;
QLSach.DataAcces;
System.Data;
namespace QLSach.BussinessLogic
{
class SachBO
{
DBAccess db = new DBAccess();
public DataTable getDSSach()
{
string query = "Select MaSach,TenSach,TenNXB,SoLuong from Sach,NhaXB where
Sach.MaNXB=NhaXB.MaNXB";
return db.getDS(query);
}
public bool kiemtraSach(string ms)
{
return db.kiemtraTontai("Sach", "MaSach", ms);
}
public bool ThemSach(Sach s)
{
string[] param={"@TenSach","@MaNXB","@SoLuong"};
object[] values={s.TenSach,s.MaNXB,s.SoLuong};
string query="Insert into Sach values(@TenSach,@MaNXB,@Soluong)";
return db.ExecuteNonQueryPara(query, param, values);
}
public bool SuaSach(Sach s)
{
string[] param = { "@MaSach", "@TenSach", "@MaNXB", "@SoLuong" };
object[] values = { s.MaSach, s.TenSach, s.MaNXB, s.SoLuong };
NhaXBBO.cs
using
using
using
using
using
using
System;
System.Collections.Generic;
System.Linq;
System.Text;
QLSach.DataAcces;
System.Data;
namespace QLSach.BussinessLogic
{
class NhaXBBO
{
DBAccess db = new DBAccess();
public DataTable getDSNXB()
{
return db.getDS("Select * from NhaXB");
}
}
}
Main.cs
using
using
using
using
using
using
using
using
using
using
using
using
using
System;
System.Collections.Generic;
System.ComponentModel;
System.Data;
System.Drawing;
System.Linq;
System.Text;
System.Windows.Forms;
System.Configuration;
System.Data.SqlClient;
System.Collections;
QLSach.BussinessLogic;
QLSach.DataAcces;
namespace QLSach
{
public partial class frmMain : Form
{
SachBO sBO = new SachBO();
NhaXBBO nxbBO = new NhaXBBO();
DBAccess db = new DBAccess();
public frmMain()
{
InitializeComponent();
}
private void frmMain_Load(object sender, EventArgs e)
{
EnableEdit(true);
DataTable tableNXB = new DataTable();
tableNXB = nxbBO.getDSNXB();
cbxNXB.DataSource = tableNXB;
cbxNXB.DisplayMember = "TenNXB";
cbxNXB.ValueMember = "MaNXB";
loadData();
bindData();
}
private void clearBind()
{
txtMS.DataBindings.Clear();
txtTS.DataBindings.Clear();
txtSL.DataBindings.Clear();
cbxNXB.DataBindings.Clear();
dgv.DataBindings.Clear();
}
private void loadData()
{
DataTable tableSach = new DataTable();
tableSach = sBO.getDSSach();
dgv.DataSource = tableSach;
}
private void bindData()
{
BindingSource bindSourceSach = new BindingSource();
bindSourceSach.DataSource = sBO.getDSSach();
clearBind();
txtMS.DataBindings.Add("Text", bindSourceSach, "MaSach");
txtSL.DataBindings.Add("Text", bindSourceSach, "SoLuong");
txtTS.DataBindings.Add("Text", bindSourceSach, "TenSach");
cbxNXB.DataBindings.Add("Text", bindSourceSach, "TenNXB");
}
private void resetData()
{
txtMS.Text = "";
txtTS.Text = "";
txtSL.Text = "";
}
private void EnableEdit(bool ok)
{
btnThem.Enabled = ok;
btnSua.Enabled = ok;
btnXoa.Enabled = ok;
btnLuu.Enabled = !ok;
btnHuy.Enabled = !ok;
dgv.Enabled = ok;
}
}
loadData();
bindData();