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);
------解决方案--------------------
老规矩..先UP
[解决办法]
up
先站个位置
[解决办法]
sbs=false;
while(sdr.read()){sbs=true;}
[解决办法]
顶
[解决办法]
UP
[解决办法]
UP
[解决办法]
UP
[解决办法]
UP