敲三層的時候我只敲了三層的登錄界面,結果改七層把登錄改完了,換了註冊時候犯了難,因爲將U層的數據寫到數據庫時候不會寫,雖然思想一樣,但是語句不一樣啊,寫法和查到的博客也都不一樣,因爲大神們的博客全是用VB.NET寫的,哎我這個只是單純的用到了查的菜鳥又得啃食了,所以下了很大的決定,再把三層從頭來過,so,至今我還在三層耕耘。話說耕耘了這麼長的時間,總得有點自己的收穫吧,所以就要總結一番了。
查
查這個語句算是很簡單的了,三層登錄視頻上也有源碼,上上篇博客C#版機房登錄中也有介紹,再次不在贅述。
增
增這個語句可得好好的說說,因爲我的痛苦便是從這而來,所以纔有了這篇費勁啃來的博客,小夥伴們可是有福享嘍。
首先看思路:U層輸入數據,點擊存儲後,開始執行B層代碼,B層我使用的是實體,所以在B層將數據全部賦值給實體(到D層就簡單了,在D層只是調用實體就可以了),D層首先進行卡號的查詢,如果卡號被在數據庫中查詢到則進行提示卡號已經存在,如果卡號未在數據庫中查詢到則進行註冊,將數據寫入數據庫後進行提示註冊成功。
U層
private void btnOk_Click(object sender, EventArgs e)
{
//卡號不能爲空
if (txtCardNo.Text.Trim() == "")
{
MessageBox.Show("卡號不能爲空");
return;
}
//學號不能爲空
if (txtStudentNo.Text.Trim()=="")
{
MessageBox.Show("學號不能爲空");
return;
}
//、、、重複不能爲空的Text語句進行提示
//卡號不爲空
Entity.cardInfo cardInfo = new Entity.cardInfo();
BLL.RegistServer CardNo = new BLL.RegistServer();
//文本框內容傳給實體
cardInfo.cardNO = txtCardNo.Text.Trim();
cardInfo.studentNO = txtStudentNo.Text.Trim();
cardInfo.staute = cmbStatus.Text;
cardInfo.lastMoney = Convert.ToDecimal(txtRechargeNum.Text);
cardInfo.type = cmbType.Text;
cardInfo.isCheck = cmbIsCheck.Text;
cardInfo.user = txtUserID.Text;
cardInfo = CardNo.CheckCardNo(cardInfo);
if (cardInfo != null)
{
MessageBox.Show("恭喜,註冊成功!");
}
if (cardInfo == null)
{
MessageBox.Show("對不起,該賬號已存在!");
}
}
B層
#region 查詢卡的方法
public Entity.cardInfo CheckCardNo(Entity.cardInfo CardNo)
{
DAL.CardDAO CardDAO = new DAL.CardDAO();
Entity.cardInfo cardInfo = new Entity.cardInfo();
//U層數據賦給傳值的實體
cardInfo.cardNO = CardNo.cardNO;
cardInfo.studentNO = CardNo.studentNO;
cardInfo.staute = CardNo.staute;
cardInfo.lastMoney = CardNo.lastMoney;
cardInfo.type = CardNo.type;
cardInfo.isCheck = CardNo.isCheck;
cardInfo.user = CardNo.user;
cardInfo = CardDAO.SelectCardNO(CardNo);//調用D層註冊查詢卡的方法
return cardInfo;
}
#endregion
D層
#region // 註冊查詢卡信息
public Entity.cardInfo SelectCardNO(Entity.cardInfo cardInfo)
{
using (SqlConnection conn = new SqlConnection(CtDB.ConnString))
{
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "select * from card where cardNO=@cardNO";//查詢卡語句
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add(new SqlParameter("@cardNO", cardInfo.cardNO));
Entity.cardInfo cards = new Entity.cardInfo();
conn.Open();//打開數據連接
SqlDataReader reader = cmd.ExecuteReader();
reader.Read();//進行數據庫查詢
try
{
AddCard(cardInfo);//調用寫入數據庫的方法
}
catch
{
cards = null;
return cards;
}
return cards;
}
}
#endregion
#region //寫入數據庫的方法
private Entity.cardInfo AddCard(Entity.cardInfo cardInfo)
{
using (SqlConnection conn = new SqlConnection(CtDB.ConnString))
{
SqlCommand cmd = conn.CreateCommand();
//寫入的語句
cmd.CommandText = "insert into card values(@cardNO,@studentNO,@statue,@lastMoney,@type,@isCheck,@userID)";
cmd.CommandType = CommandType.Text;
//寫入的內容
cmd.Parameters.Add(new SqlParameter("@cardNO", cardInfo.cardNO));
cmd.Parameters.Add(new SqlParameter("@studentNO", cardInfo.studentNO));
cmd.Parameters.Add(new SqlParameter("@statue", cardInfo.staute));
cmd.Parameters.Add(new SqlParameter("@lastMoney", cardInfo.lastMoney));
cmd.Parameters.Add(new SqlParameter("@type", cardInfo.type));
cmd.Parameters.Add(new SqlParameter("@isCheck", cardInfo.isCheck));
cmd.Parameters.Add(new SqlParameter("@userID", cardInfo.user));
conn.Open();//打開數據連接
cmd.ExecuteNonQuery();//執行寫入語句
return cardInfo;
}
}
#endregion
至此,我探索的完整的插入數據就結束了,下面看看刪除吧。
刪
說起刪呢,想到了,最近情人節,就算情人節也別將就自己,不喜歡了就刪了他,哈哈。。。
刪呢和上述的增是很相似的,所以代碼也就不貼了,只把簡單的語句寫出來供學習。
string MyDelete="Delete from card where cardID="+TextBox1.Text;
SqlCommand MyCommand=new SqlCommand(MyDelete,MyConnection);
//異常處理
try
{
MyConnection.Open();
MyCommand.ExecuteNonQuery();
MyConnection.Close();
txtCardID.Text="";
}
catch(Exception ex)
{
Console.WriteLine("{0} Exception caught.", ex);
}
改
改和刪和增還是類似的,所以下面的話你懂得。。。
string MyUpdate="Update card set studentNO='"+studentNO+"',type='"+type+"' where cardIDID="+txtCardID.Text;
SqlCommand MyCommand=new SqlCommand(MyUpdate,MyConnection);
try
{
MyConnection.Open();
MyCommand.ExecuteNonQuery();
MyConnection.Close();
txtCardID.Text="";
}
catch(Exception ex)
{
Console.WriteLine("{0} Exception caught.", ex);
}
寫了這麼多,最想說的一句話就是:不懂一定得硬着臉皮去問去查去探索啊。培養死不要臉的革命精神,哈哈,都懂得!!!