問題描述:
作爲信息管理系統,表單的新建頁面,包括保存和提交操作。作爲使用者,不知道編程的機制,如何保證使用保存和提交按鈕,都能保證數據正確寫入數據庫中,如何消除兩者之間的差異,給用戶的感覺是兩者之間都是一樣的方便、準確和快捷?
這裏給出了一種解決方案。通過在頁面放置一個隱藏的label標籤,本標籤主要用於保存插入語句返回的自增長id的值,並設置其初始值爲“None"。然後,在保存中根據隱藏標籤的值,判斷使用數據庫插入語句,還是數據庫更新語句。
下面是保存公用函數的C#代碼實現:
private int SaveDataInfo(string state, string msg)
{
Dictionary<string, string> tableKeyVals = new Dictionary<string, string>();
ArrayList temp = new ArrayList();
GetAllControlKeyVals(this, tableKeyVals, ref temp);//獲取信息
if ("None" == lb_none_approvalID.Text)
{//執行插入操作
if (dataInsertDb(tableKeyVals, state) > 0)
{
MyClientScript.ygJScript.Alert(msg + "成功", this);
userCtr1.SetTableKeyValue(lb_none_approvalID.Text);//上傳設置3
return 1;
}
else
{
MyClientScript.ygJScript.Alert(msg + "失敗", this);
return 0;
}
}
else
{//執行更新操作
if (dataUpdateDb(tableKeyVals, state) > 0)
{
MyClientScript.ygJScript.Alert(msg + "成功", this);
return 1;
}
else
{
MyClientScript.ygJScript.Alert(msg + "失敗", this);
return 0;
}
}
}
下面是UPdate和Insert語句結合可輸入元素鍵值對字典對象,實現的數據的更新和插入操作的代碼實現的例子。
private int dataUpdateDb(Dictionary<string, string> tableKeyVals, string state)
{
string sql = "update tb_approval set ";
foreach (KeyValuePair<string, string> item in tableKeyVals)
{
sql += item.Key.Split('_')[1] + "='" + item.Value + "',";
}
sql += "addTime='" + DateTime.Now.ToString() + "',state='" + state + "' where approvalID='" + lb_none_approvalID.Text + "'";
if (MyDBInterface.getNothingByText(sql) > 0)
{
return 1;
}
else
{
return 0;
}
}
private int dataInsertDb(Dictionary<string, string> tableKeyVals, string state)
{
string sql = "insert into tb_approval(";
string sqlTemp = " values('";
foreach (KeyValuePair<string, string> item in tableKeyVals)
{
sql += item.Key.Split('_')[1] + ",";
sqlTemp += item.Value + "','";
}
sql += "addUserID,addUserName,addTime,state)";
sqlTemp += user.UserID + "','" + user.UserName + "','" + DateTime.Now.ToString() + "','" + state + "');select SCOPE_IDENTITY()";
sql += sqlTemp;//拼湊到完成sql語句
DataTable resDt = MyDBInterface.getTableByText(sql);
if (resDt != null && resDt.Rows.Count > 0)
{
lb_none_approvalID.Text = resDt.Rows[0][0].ToString();//記錄插入後的返回ID
return 1;
}
else
{
return 0;
}
}
至此,整個的數據表單的保存和提交操作基本完成。最後的工作就是如何在保存和提交時,正確的調用函數做出判斷。