首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

更新时怎么把空值NULL更新回数据库

2012-01-03 
更新时如何把空值NULL更新回数据库?WorldNewsAdd.cs源码:publicstaticboolupdateWorldNews(WorldNewsTypet

更新时如何把空值NULL更新回数据库?
WorldNewsAdd.cs源码:
        public   static   bool   updateWorldNews(WorldNewsType   t)
        {
                try
                {
                        SqlConnection   con   =   DB.createCon();
                        con.Open();
                        SqlCommand   cmd   =   new   SqlCommand( "update   WorldNews   set   WorldNewsDate= ' "   +   t.WorldNewsDate   +   " '   where   WorldNewsID= ' "   +   t.WorldNewsID   +   " ' ",   con);
                        cmd.ExecuteNonQuery();
                        return   true;
                }
                catch   (Exception   e)
                {
                        return   false;
                }
        }

更新页update.aspx.cs后台代码:
protected   void   btnUpdate_Click(object   sender,   EventArgs   e)
        {
                string   strID   =   Request.QueryString[ "WorldNewsID "];
                WorldNewsType   t   =   new   WorldNewsType();
                t.WorldNewsID   =   strID;
                if   (this.txtWorldNewsDate.Text   ==   null   ||   this.txtWorldNewsDate.Text   ==   " ")
                {
                        t.WorldNewsDate   =   DBNull.Value.ToString();
                }
                else
                {
                        t.WorldNewsDate   =   this.txtWorldNewsDate.Text;
                }
                if   (WorldNewsAdd.updateWorldNews(t))
                {
                        Response.Write( "成功 ");
                }
                else
                {
                        Response.Write( "失败 ");
                }


要实现文本框接收的值为空值(NULL)时,把空值(NULL)更新回数据库.
WorldNewsDate的数据类型是DateTime,用我上面的代码更新回数据库时,如果文本框是空值会往数据库里写进一个1900-1-1   0:00:00的时间值...



[解决办法]
System.Convert.DBNull
说错了,是这个
[解决办法]
或者拼sql字符串, date = null
[解决办法]
DBNull.Value
或者SQL中的寫null
-------insert table (a1,a2) values(null,null)
[解决办法]
直接=null不就完事了?
[解决办法]
难道楼主在null上单引号了?
[解决办法]
需要判断一下,如果是空值的话,你的语句要改,看看你上面写的语句,null确实是包括在引号里面了,所以不成功。
[解决办法]
int =0, " " =null
[解决办法]
SqlCommand cmd = new SqlCommand( "update WorldNews set WorldNewsDate= ' " + t.WorldNewsDate + " ' where WorldNewsID= ' " + t.WorldNewsID + " ' ", con);
=>
SqlCommand cmd = new SqlCommand( "update WorldNews set WorldNewsDate= " + t.WorldNewsDate + " where WorldNewsID= " + t.WorldNewsID + ", con);
[解决办法]
首先要判断输入是否为日期,并且当等于DateTime.MinValue时插入空值(System.DBNull.Value).
否则,插入输入的日期值。
[解决办法]
if(textbox.text == " " || textbox.text == null )
{

取得這個值: System.DBNull.Value; 存入数据库
}

[解决办法]
按LZ的意思應該要判斷如果插入的字段為空就再另寫一手入語句吧(最笨的一方法了)
主要的是把你的update的語句中的字段值單引號 '去掉就可.

LZ的插入語句只有一個字段值好辦﹗
if(t.WorldNewsDate == " " || t.WorldNewsDate ==null)
SqlCommand cmd = new SqlCommand( "update WorldNews set WorldNewsDate=null where WorldNewsID= ' " + t.WorldNewsID + " ' ", con);

else

SqlCommand cmd = new SqlCommand( "update WorldNews set WorldNewsDate= ' " + t.WorldNewsDate + " ' where WorldNewsID= ' " + t.WorldNewsID + " ' ", con);
[解决办法]
,实际有很多字段要判断
你可以写成存储过程:然后用system.dbnull.value.

[解决办法]
把WorldNewsType类的WorldNewsDate成员定义成DateTime类型,别定义成String类型,
if (this.txtWorldNewsDate.Text == null || this.txtWorldNewsDate.Text == " ")
{
t.WorldNewsDate = DBNull.Value.ToString();
}
else
{
t.WorldNewsDate = this.txtWorldNewsDate.Text;
}
---->
if (this.txtWorldNewsDate.Text == null || this.txtWorldNewsDate.Text == " ")
{
t.WorldNewsDate = DBNull.Value;
}
else
{
t.WorldNewsDate = Convert.ToDateTime(this.txtWorldNewsDate.Text);
}

[解决办法]
怎么更新成NULL都是其次。 但是觉得你的设计有问题,你将NULL做为一个状态值来使用用来区别某个记录的状态。 使用NULL做状态值不光影响数据库检索效率还不易操作。
数据格式化的问题。
[解决办法]
這樣可不可以﹕
set WorldNewsDate= " case ' " + t.WorldNewsDate + " ' when = " " then null else ' " + t.WorldNewsDate + " '


[解决办法]
或者如樓上說的寫成存儲過程﹕
try
{
SqlConnection con = DB.createCon();
con.Open();
SqlParameter[] ps;
String strSQL;

strSQL = "update WorldNews set WorldNewsDate=@WorldNewsDate ";
ps = new SqlParameter[] { new SqlParameter( "@WorldNewsDate ", SqlDbType.NVarChar,50);
.................
ps[0].Value = t.WorldNewsDate == " "?null : t.WorldNewsDate;


cmd.ExecuteNonQuery();
return true;
}
[解决办法]
也可以用try {} catch{}
[解决办法]
建议数据库中一般不要用NULL值, 一是编程的时候要额外处理空值,非常麻烦,二是空值也会增加数据库的查询开销,可以用一些替代方案,比如0,空字符串等等一些比较特殊的值代替空值

热点排行