由于“int”类型的值永不等于“int?”类型的“null”,该表达式的结果始终为“true”

kingno3 2011-10-12 10:55:18
using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Collections.Generic;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Text;
using System.Data.OleDb;
using Maticsoft.DBUtility;//请先添加引用
namespace Maticsoft.DAL
{
/// <summary>
/// 数据访问类newsbig。
/// </summary>
public class newsbig
{
public static string connectionString = PubConstant.ConnectionString;
public newsbig()
{}
#region 成员方法


/// <summary>
/// 是否存在该记录
/// </summary>
public bool Exists(int id)
{
StringBuilder strSql=new StringBuilder();
strSql.Append("select count(1) from newsbig");
strSql.Append(" where id="+id+" ");
return DbHelperOleDb.Exists(strSql.ToString());
}

/// <summary>
/// 增加一条数据
/// </summary>
public void Add(Maticsoft.Model.newsbig model)
{
StringBuilder strSql=new StringBuilder();
StringBuilder strSql1=new StringBuilder();
StringBuilder strSql2=new StringBuilder();
if (model.id != null)
{
strSql1.Append("id,");
strSql2.Append(""+model.id+",");
}
if (model.newsclass != null)
{
strSql1.Append("newsclass,");
strSql2.Append("'"+model.newsclass+"',");
}
if (model.newsid != null)
{
strSql1.Append("newsid,");
strSql2.Append(""+model.newsid+",");
}
strSql.Append("insert into newsbig(");
strSql.Append(strSql1.ToString().Remove(strSql1.Length - 1));
strSql.Append(")");
strSql.Append(" values (");
strSql.Append(strSql2.ToString().Remove(strSql2.Length - 1));
strSql.Append(")");
DbHelperOleDb.ExecuteSql(strSql.ToString());
}

/// <summary>
/// 更新一条数据
/// </summary>
public void Update(Maticsoft.Model.newsbig model)
{
StringBuilder strSql=new StringBuilder();
strSql.Append("update newsbig set ");
if (model.id != null)
{
strSql.Append("id="+model.id+",");
}
if (model.newsclass != null)
{
strSql.Append("newsclass='"+model.newsclass+"',");
}
if (model.newsid != null)
{
strSql.Append("newsid="+model.newsid+",");
}
int n = strSql.ToString().LastIndexOf(",");
strSql.Remove(n, 1);
strSql.Append(" where id="+ model.id+" ");
DbHelperOleDb.ExecuteSql(strSql.ToString());
}

/// <summary>
/// 删除一条数据
/// </summary>
public void Delete(int id)
{
StringBuilder strSql=new StringBuilder();
strSql.Append("delete from newsbig ");
strSql.Append(" where id="+id+" " );
DbHelperOleDb.ExecuteSql(strSql.ToString());
}

/// <summary>
/// 得到一个对象实体
/// </summary>
public Maticsoft.Model.newsbig GetModel(int id)
{
StringBuilder strSql=new StringBuilder();
strSql.Append("select ");
strSql.Append(" id,newsclass,newsid ");
strSql.Append(" from newsbig ");
strSql.Append(" where id="+id+" " );
Maticsoft.Model.newsbig model=new Maticsoft.Model.newsbig();
DataSet ds=DbHelperOleDb.Query(strSql.ToString());
if(ds.Tables[0].Rows.Count>0)
{
if(ds.Tables[0].Rows[0]["id"].ToString()!="")
{
model.id=int.Parse(ds.Tables[0].Rows[0]["id"].ToString());
}
model.newsclass=ds.Tables[0].Rows[0]["newsclass"].ToString();
if(ds.Tables[0].Rows[0]["newsid"].ToString()!="")
{
model.newsid=int.Parse(ds.Tables[0].Rows[0]["newsid"].ToString());
}
return model;
}
else
{
return null;
}
}
/// <summary>
/// 获得数据列表
/// </summary>
public DataSet GetList(string strWhere)
{
StringBuilder strSql=new StringBuilder();
strSql.Append("select id,newsclass,newsid ");
strSql.Append(" FROM newsbig ");
if(strWhere.Trim()!="")
{
strSql.Append(" where "+strWhere);
}
return DbHelperOleDb.Query(strSql.ToString());
}
public List<Model.newsbig> get_List()
{
List<Model.newsbig> List = new List<Model.newsbig>();
DataTable dt = getDataSet("select * from newsbig where newsid=0 ").Tables[0];
foreach (DataRow dr in dt.Rows)
{
Model.newsbig model = new Model.newsbig();
model.id = Convert.ToInt32(dr["id"]);
model.newsclass = dr["newsclass"].ToString();
model.newsid = Convert.ToInt32(dr["newsid"]);
List.Add(model);
}
return List;
}

public List<Model.newsbig> get_List(string ParentID)
{
List<Model.newsbig> List = new List<Model.newsbig>();
DataTable dt = getDataSet("select * from newsbig where newsid=" + ParentID + " ").Tables[0];
foreach (DataRow dr in dt.Rows)
{
Model.newsbig model = new Model.newsbig();
model.id = Convert.ToInt32(dr["id"]);
model.newsclass = dr["newsclass"].ToString();
model.newsid = Convert.ToInt32(dr["newsid"]);
List.Add(model);
}
return List;
}

protected DataSet getDataSet(string sql)
{
OleDbConnection conn = new OleDbConnection(connectionString);
conn.Open();

OleDbCommand cmd = new OleDbCommand(sql, conn);
OleDbDataAdapter da = new OleDbDataAdapter();
da.SelectCommand = cmd;
DataSet ds = new DataSet();
da.Fill(ds);
conn.Close();
return ds;
}
public DataTable GetAll(int id)
{
StringBuilder strSql = new StringBuilder();
strSql = new StringBuilder();
strSql.Append("select * from newsbig where newsid=" + id + "");
return DbHelperOleDb.Fill(strSql.ToString());
}
/*
*/

#endregion 成员方法
}
}

应该如何修改?
...全文
1114 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
qqcxw 2011-11-22
  • 打赏
  • 举报
回复

你的model.newsid应该是Int类型的吧

如果是Int?就不会报警告了
lcaiyhh 2011-10-13
  • 打赏
  • 举报
回复
楼主,将实体的model.newsid 属性修改成
public int? _newsid 

public int? newsid {get;set}


就是将类型后面加个?号就可以了,该符号表示该值 允许null

时间类型字段也可以

解决问题,请给分
SomethingJack 2011-10-13
  • 打赏
  • 举报
回复
楼主的这个DAL层貌似动软.NET自动生成的!
SomethingJack 2011-10-13
  • 打赏
  • 举报
回复
if( !string.IsNullOrEmpty(model.FileNam) )
{
strWhere += " and FileNam like @FileNam";
}
这样判断试试
liukaizxc 2011-10-13
  • 打赏
  • 举报
回复
model.newsid 这个模型的 这个属性 你创建这个实体类的时候 就应该赋了初值的
你判断 如果 model.newsid!=你model实体类的newsid的初值 就可以了
flybisu 2011-10-13
  • 打赏
  • 举报
回复
int?.value 不是等于int了吗?
ruanwei1987 2011-10-13
  • 打赏
  • 举报
回复
Int32 值类型表示值介于 -2,147,483,648 到 +2,147,483,647 之间的有符号整数。


只有这些,没其他的了
梦纷飞舞 2011-10-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 taomanman 的回复:]

而且int类型的默认值就是0,压根就不会出现等于null的情形
[/Quote]
+1
int绝对不会出现NULL,不知道LZ想表达什么?
  • 打赏
  • 举报
回复
在获取值得时候界面 如果 为""空值,就赋值:model.newsid=-1;

然后修改的时候判断的时候if(model.newsid!=-1)
暖枫无敌 2011-10-12
  • 打赏
  • 举报
回复
而且int类型的默认值就是0,压根就不会出现等于null的情形
暖枫无敌 2011-10-12
  • 打赏
  • 举报
回复
空值在C#中为null

C#中的解释:
null 是引用类型变量的默认值。在C#中判断变量是否是空值,通过expression == null或者expression !=

null即可,即使expression是值类型也不会抛出错误,不过会有警告信息。

例如下面的代码:编译时会提示如下警告信息:由于“int”类型的值永不等于“int?”类型的“null”,该表达式的结果始终为“false”。

你红色标记的是出错的地方嘛?

if (!string.IsNullOrEmpty(model.newsid.ToString()))
机器人 2011-10-12
  • 打赏
  • 举报
回复
又来代码 Review ...
提示不是很清晰嘛? model.newid 的这个属性是 int 类型。根本不会有null

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧