亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

業務對象 插入 和 更新 數據庫時,業務對象的空值 以及對于數據庫字段默認值 處理問題?

業務對象 插入 和 更新 數據庫時,業務對象的空值 以及對于數據庫字段默認值 處理問題?

慕少森 2018-12-06 12:46:19
一:我的問題: ??? ?UI執行插入 和? 更新 時????? 只對EbUser user = new EbUser();的部分字段賦值,而參數是整個user. ??????? 對于沒有賦值的字段 ??????? 可能是在日后的用戶信息完善中由用戶自己維護 ???? ???也可能是數據庫本身設定有默認值 例如dateCreated字段在定義的時候有默認值getdate()?? ? ??????? 請問對于這個問題,插入時該如何處理?對于沒有賦值的字段 以及有默認值的字段該如何處理? 二、解決方案基本情況如下: 1、表結構 CREATE TABLE EbUser( ?? userId?? int IDENTITY(1,1) NOT NULL Primary Key, */ ??? userName nvarchar(50) NULL, nickName nvarchar(50) NULL, userImg ? nvarchar(50) NULL,? ??? phone?? ?nvarchar(50) NULL, ??? mobile? ? nvarchar(50) NULL, ??? IdCard? ?nvarchar(50) NULL,? ??? email?? ?varchar(50) NULL, ???? qq?? ?? ??varchar(50) NULL, ??? city?? ?nvarchar(50) NULL, ??? addr??? ?nvarchar(50) NULL, ??? postCode?? ???varchar(50) NULL,??????? ??? userPwd???? varchar(50) NULL,?????????? ??? dateCreated??? date NULL DEFAULT (getdate())?? , ??? roleId? ??????? Int???? null, ??? levelId???? Int??? null,???????? ??? memo ???????????NVarchar(200)? null ) 2、業務對象類 ??? public class EbUser??? {??????? public int?? userId?? {get;set;}??????? public string?? userName?? {get;set;}??????? public string?? nickName?? {get;set;}??????? public string?? userPwd?? {get;set;}??????? public string?? phone?? {get;set;}??????? public string?? mobile?? {get;set;}??????? public string?? IdCard?? {get;set;}??????? public string?? email?? {get;set;}??????? public string?? qq?? {get;set;}??????? public string?? city?? {get;set;}??????? public string?? addr?? {get;set;}??????? public string?? postCode?? {get;set;}??????? public DateTime?? dateCreated?? {get;set;}??????? public int?? roleId?? {get;set;}??????? public int?? levelId?? {get;set;}??????? public string?? memo?? {get;set;}??? } 3、數據訪問層Dao /// <summary>??/// 添加dbo.EbUser??/// </summary>??/// <param name="ebUser">dbo.EbUser</param>??/// <returns>最新編號</returns>??????? ??public static int AddEbUser(EbUser ebUser)??{???string sql = "INSERT INTO EbUser(userName,nickName,userPwd,phone,mobile,IdCard,email,qq,city,addr,postCode,dateCreated,roleId,levelId,memo)" +????" values(@userName,@nickName,@userPwd,@phone,@mobile,@IdCard,@email,@qq,@city,@addr,@postCode,@dateCreated,@roleId,@levelId,@memo);" + ????" SELECT SCOPE_IDENTITY();";??????try??????????? {??????????????? SqlParameter[] paras = new SqlParameter[]????{?????new SqlParameter("@userName",SqlDbType.NVarChar,50),?????new SqlParameter("@nickName",SqlDbType.NVarChar,50),?????new SqlParameter("@userPwd",SqlDbType.VarChar,50),?????new SqlParameter("@phone",SqlDbType.NVarChar,50),?????new SqlParameter("@mobile",SqlDbType.NVarChar,50),?????new SqlParameter("@IdCard",SqlDbType.NVarChar,50),?????new SqlParameter("@email",SqlDbType.VarChar,50),?????new SqlParameter("@qq",SqlDbType.VarChar,50),?????new SqlParameter("@city",SqlDbType.NVarChar,50),?????new SqlParameter("@addr",SqlDbType.NVarChar,50),?????new SqlParameter("@postCode",SqlDbType.VarChar,50),?????new SqlParameter("@dateCreated",SqlDbType.DateTime,8),?????new SqlParameter("@roleId",SqlDbType.Int,4),?????new SqlParameter("@levelId",SqlDbType.Int,4),?????new SqlParameter("@memo",SqlDbType.NVarChar,200)????};???int i=0;?????????? paras[i++].Value = ebUser.userName;?????????? paras[i++].Value = ebUser.nickName;?????????? paras[i++].Value = ebUser.userPwd;?????????? paras[i++].Value = ebUser.phone;?????????? paras[i++].Value = ebUser.mobile;?????????? paras[i++].Value = ebUser.IdCard;?????????? paras[i++].Value = ebUser.email;?????????? paras[i++].Value = ebUser.qq;?????????? paras[i++].Value = ebUser.city;?????????? paras[i++].Value = ebUser.addr;?????????? paras[i++].Value = ebUser.postCode;?????????? paras[i++].Value = ebUser.dateCreated;?????????? paras[i++].Value = ebUser.roleId;?????????? paras[i++].Value = ebUser.levelId;?????????? paras[i++].Value = ebUser.memo;????? return Convert.ToInt32(SqlHelper.ExecuteCommand(sql, paras));??????????? }??????????? catch (Exception e)??????????? {??????????????? Console.WriteLine(e.Message);??????????????? throw e;??????????? }??} 4、業務邏輯層BLL ?? public static int AddEbUser(EbUser ebUser)??????? {??????????? return EbUserService.AddEbUser(ebUser);??????? } 6、UI界面層代碼 protected void Regist_Click(object sender, EventArgs e) ??????? { ??????????? EbUser user = new EbUser(); ? ??????????? user.userName = UserName.Text.ToString().Trim(); ????????????user.userPwd = Wangzhl.DecryptString(UserName.Text.ToString().Trim()); ??????????????????????? ??????????? user.city = GetClientInfo.GetCityByIp(GetClientInfo.GetIp()); ?????????? EbUserManager.AddEbUser(user) ??????? } 7、我的問題 ?????? UI執行插入時????? 只對EbUser user = new EbUser();的部分字段賦值,而參數是整個user. ??????? 對于沒有賦值的字段 ??????? 可能是在日后的用戶信息完善中由用戶自己維護 ???? ???也可能是數據庫本身設定有默認值 例如dateCreated字段在定義的時候有默認值getdate()?? ? ??????? 請問對于這個問題,插入時該如何處理?對于沒有賦值的字段 以及有默認值的字段該如何處理?
查看完整描述

4 回答

?
慕容708150

TA貢獻1831條經驗 獲得超4個贊

1.對非必要的字段設為可空,數據庫設為可空,業務對象類值類型也用可空類型,int?,DateTime?,decimal?之類的.

2.可以把這些非必要的字段設計為另外的表和業務對象類,例如上面的叫UserInfo或者UserProperty,使用另外的方法去維護.

查看完整回答
反對 回復 2019-01-07
?
縹緲止盈

TA貢獻2041條經驗 獲得超4個贊

在DAO加個判斷,如果值為為空則不添加,可以不?

查看完整回答
反對 回復 2019-01-07
?
ABOUTYOU

TA貢獻1812條經驗 獲得超5個贊

你的SQL的參數值也要處理,如果參數值為null,則賦 DBNull.Value

查看完整回答
反對 回復 2019-01-07
  • 4 回答
  • 0 關注
  • 538 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號