| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1145 人关注过本帖
标题:[求助]关于多条件查询的问题
只看楼主 加入收藏
fenwuxue
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-4-10
收藏
 问题点数:0 回复次数:10 
[求助]关于多条件查询的问题

小弟我最近在做一个项目,正在做多条件查询,当什么条件都不选时,能显示正确的结果。但我选了一个条件(正确的条件)后,它就显示没有符合的内容。
具体程序如下:(只显示相关的代码,其它代码都没有错,查询的内容不在同一张表)
--------------------------------------
/// <summary>
/// 求职者信息查询
/// </summary>
/// <param name="obj"></param>
/// <param name="odj"></param>
/// <returns>求职者信息</returns>
public DataSet getJskinfo(MST_Jskinfo obj, MST_Jskskill odj)
{
DataSet dsJskinfo = null;

//ACCESS实例作成
ComUser gJkinfo = new ComUser();

try
{
//DB连接
gJkinfo.dbAccess.ConnectionOpen();

// 事务处理开始
gJkinfo.dbAccess.TransactionBegin();

//业务处理
dsJskinfo = gJkinfo.SelectJskinfo(obj, odj);//每次从这儿就直接跳到catch

if (dsJskinfo == null)
{
throw new Exception("求职者信息查询失败");
}

//事务结束
gJkinfo.dbAccess.TransactionCommit();
}
catch (Exception e)
{
//Log处理
logger.Error(e);

//事务回滚
gJkinfo.dbAccess.TransactionRollBack();

dsJskinfo = null;
}
finally
{
if (!gJkinfo.dbAccess.ConnectionClose())
{
dsJskinfo = null;
}
}

return dsJskinfo;
}
--------------------------------------------
/// <summary>
/// 求职者信息查询
/// </summary>
/// <param name="obj"></param>
/// <param name="odj"></param>
/// <returns>求职者信息</returns>
public DataSet SelectJskinfo(MST_Jskinfo obj, MST_Jskskill odj)
{
//DBAcess部件调用
DataSet ds;

//sql语句选择函数定义成字符串便于引用和处理
string Jsk_SelctSql = JskSQL_SELECT(obj,odj);
if (obj == null || odj == null)
{
ds = null;
}
else
{

ds = this.dbAccess.dbSelect(Jsk_SelctSql, Jskinfo_MEAT.MST_NAME,null);//怀疑是这儿出错了
}

return ds;
}
-----------------------------------------------
/// <summary>
/// 根据条件选择合适求职者信息查询用SQL
/// </summary>
/// <autor>DXJ</autor>
/// <returns>合适的SQL语句</returns>
private string JskSQL_SELECT(MST_Jskinfo obj,MST_Jskskill odj)
{
string Jsk_info_SELECT = " Select distinct t1.JSK_NM,t1.JSK_Sex,t1.JSK_Bth ,"
+ " t1.JSK_School,t1.JSK_Exp,t2.Jsk_GD,t1.JSK_PosT,t1.JSK_State,t1.JSK_Op "
+ " From MST_Jskinfo t1 inner join MST_Jskskill t2 "
+ " On t1.JSK_ID=t2.JSK_ID inner join "
+ " MST_Jskexp t3 "
+ " On t2.JSK_ID=t3.JSK_ID "
+ " Where "
+ " JSK_State is not null ";
//没有检索条件用SQL
if (obj == null && odj == null)
{
return Jsk_info_SELECT;
}
//有检索条件用SQL
else
{ //求职方向不为空用SQL
if(obj.JSK_PosT!=null && !obj.JSK_PosT.Equals(""))
{
Jsk_info_SELECT = Jsk_info_SELECT + "And MST_Jskinfo.JSK_PosT = '" + obj.JSK_PosT + "'";

}

//工作经验不为空用SQL
if(obj.JSK_Exp!=null && !obj.JSK_Exp.Equals(""))
{
Jsk_info_SELECT = Jsk_info_SELECT + "And MST_Jskinfo.JSK_Exp = '" + obj.JSK_Exp + "'";

}

//语种不为空用SQL
if(odj.Small_NM!=null && !odj.Small_NM.Equals(""))
{
Jsk_info_SELECT = Jsk_info_SELECT + "And MST_Jskskill.Small_NM ='" + odj.Small_NM + "'";

}

//语言等级不为空用SQL
if (odj.Jsk_GD != null && !odj.Jsk_GD.Equals(""))
{
Jsk_info_SELECT = Jsk_info_SELECT + "And MST_Jskskill.Jsk_GD ='" + odj.Jsk_GD + "'";

}

//技术种类不为空用SQL
if(odj.Big_NM != null && !odj.Big_NM.Equals(""))
{
Jsk_info_SELECT = Jsk_info_SELECT + "And MST_Jskskill.Big_NM ='" + odj.Big_NM + "'";

}

//技术名称不为空用SQL
if(odj.Small_NM !=null && !odj.Small_NM.Equals(""))
{
Jsk_info_SELECT = Jsk_info_SELECT + "And MST_Jskskill.Small_NM ='" + odj.Small_NM + "'";

}

//期望工作地点不为空用SQL
if(obj.JSK_Place!=null && !obj.JSK_Place.Equals(""))
{
Jsk_info_SELECT = Jsk_info_SELECT + "And MST_Jskinfo.JSK_Place ='" + obj.JSK_Place + "'";

}
return Jsk_info_SELECT;
}

}
------------------------------------------------------
/// <summary>
/// 根据输入的查询SQL语句,SQL参数,表名从DB中检索数据,存入DataSet中
/// </summary>
/// <param name="sSelectSql">SQL语句</param>
/// <param name="sTableName">表名</param>
/// <param name="sqlpArray">SQL参数</param>
/// <returns>返回值DataSet</returns>
public DataSet dbSelect(string sSelectSql, string sTableName, SqlParameter[] sqlpArray)
{
logger.Info("SQL文" + sSelectSql + "\n");
if (sSelectSql == null)
{
return null;
}
if (sSelectSql.Length == 0)
{
return null;
}

SqlCommand sqlCmd = new SqlCommand();
sqlCmd.Connection = conn;
if (tran != null)
{
sqlCmd.Transaction = tran;
}
SqlDataAdapter da = new SqlDataAdapter();
DataSet ds = new DataSet();

sqlCmd.CommandText = sSelectSql;
da.SelectCommand = sqlCmd;

if (sqlpArray != null)
{
foreach (SqlParameter sqlp in sqlpArray)
{
if (sqlp != null)
{
da.SelectCommand.Parameters.Add(sqlp);
}
}
}

da.Fill(ds, sTableName);
return ds;
}

搜索更多相关主题的帖子: 条件 查询 
2007-04-24 10:36
cyyu_ryh
Rank: 8Rank: 8
等 级:贵宾
威 望:45
帖 子:1899
专家分:176
注 册:2006-10-21
收藏
得分:0 
" And MST_Jskinfo.JSK_PosT = '" + obj.JSK_PosT + 等各个And 前加空格


有事无事都密我. MSN: cyyu_ryh@hotmail.co.jp E-mail: cyyu_ryh@
2007-04-24 11:39
fenwuxue
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-4-10
收藏
得分:0 
不行,还是同样的错误。

2007-04-24 13:59
cyyu_ryh
Rank: 8Rank: 8
等 级:贵宾
威 望:45
帖 子:1899
专家分:176
注 册:2006-10-21
收藏
得分:0 
那你单步调试看看

有事无事都密我. MSN: cyyu_ryh@hotmail.co.jp E-mail: cyyu_ryh@
2007-04-24 14:31
fenwuxue
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-4-10
收藏
得分:0 

还是一样哈


2007-04-24 16:26
爱编程的小猪
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2006-2-14
收藏
得分:0 
字符串拼接很容易出错...建议使用存储过程。

2007-04-24 16:31
bygg
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:乖乖的心中
等 级:版主
威 望:241
帖 子:13555
专家分:3076
注 册:2006-10-23
收藏
得分:0 
你的 catch 里说的是什么错啊..

飘过~~
2007-04-24 16:46
fenwuxue
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-4-10
收藏
得分:0 

恩,同感哈
catch里面报的错是列前缀 'MST_Jskinfo' 与查询中所用的表名或别名不匹配。


2007-04-25 10:09
fenwuxue
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-4-10
收藏
得分:0 
我检查过sql,也在sql查询分析器里试过,没有错,能显示答案。

2007-04-25 14:45
bygg
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:乖乖的心中
等 级:版主
威 望:241
帖 子:13555
专家分:3076
注 册:2006-10-23
收藏
得分:0 

private string JskSQL_SELECT(MST_Jskinfo obj,MST_Jskskill odj)

这个里的MST_Jskinfo 是什么?


飘过~~
2007-04-25 14:53
快速回复:[求助]关于多条件查询的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021806 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved