MSSQL数据库双主键问题,请指教,顶者有分
public bool Exists(string sjid,string jb)
{
bool sbs;
SqlParameter[] parms = new SqlParameter[] { new SqlParameter( "@sjid ", sjid),new SqlParameter( "@jb ",jb) };
SqlDataReader sdr = SqlDb.ExecuteReader(SqlDb.ConnMainString, CommandType.Text, SQL_SELECT, parms);
if (sdr!=null)
{
sbs = true;
}
else
{
sbs = false;
}
return sbs;
}
//其中sjid 和jb为同一张表的双主键
private const string SQL_SELECT = "select sjid,jb from sj_mz_ycfswk_sjpsjl where sjid=@sjid and jb=@jb ";
//SQL查询语句
问题描述如下:
现在我里面有个0000091 /*(数据ID)*/ city /*(行政级别)*/
但是每当我想插入时 0000091 /*(数据ID)*/ gj /*(行政级别)*/时,老是执行sbs = true;
------解决方案--------------------你确定你建的是联合主键吗?
你看你的参数是不是正确传进去了
用你的查询语句直接在数据库中运行看看
------解决方案--------------------我觉得你这个if (sdr!=null) 判断有问题..
------解决方案--------------------首先你要明确下
判断时用
if(dr.Read()){
//重复
}
二你的参数是否正确,你可以把它写死如
select sjid,jb from sj_mz_ycfswk_sjpsjl where sjid= '0000091 ' and jb= 'gj '
试试
------解决方案--------------------不可能吧,是联合主键不咯
------解决方案--------------------while(dr.read()!=null)
------解决方案--------------------// 按道理 xxxCommond.ExecuteReader(...) 返回的 xxxDataReader != null
// 不知道你的SqlDb.ExecuteReader 内部是如何实现的,
// 故尝试这样:
if (sdr!=null) {
sbs = true;
}
else
{
sbs = false;
}
> > > > >
sbs = ((sdr != null) && sdr.HasRow);
------解决方案--------------------