求助,将下面程序中的查询语句转换到存储过程中实现

kiver149 2010-01-20 04:35:11
数据库里面有个表Users包括id,username,password,call,email,age列
查询语句为:
String sql = "select * from users where 1=1";
if(null != username && !"".equals(username)){
sql += " and username='"+username+"'";
}
if(null != password && !"".equals(password)){
sql +=" and password = '"+password+"'";
}
...全文
96 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zh_heng 2010-01-21
  • 打赏
  • 举报
回复
CREATE PROCEDURE XXXXXX
(
@username varchar(XX),
@password varchar(XX)
)
AS
BEGIN
select * from Users
where 1=1
CASE WHEN @username is not null AND @username <> "" THEN
and username = @username
END
CASE WHEN @password is not null AND @password <> "" THEN
and password = @password
END
END
GO
不懂编程 2010-01-21
  • 打赏
  • 举报
回复
存储过程
CREATE PROCEDURE p_get_user
@userName varchar(50),
@psd varchar(50)
AS
BEGIN
select count(user_name) from users where user_name = @userName and password = @psd
END

public static void main(String[] args) {
String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; // 加载JDBC驱动
String dbURL = "jdbc:sqlserver://192.168.3.2:1433; DatabaseName=wd"; // 连接服务器和数据库

String userName = "name"; // 用户名
String userPwd = "psd"; // 密码
Connection dbConn;
try {
Class.forName(driverName);
dbConn = DriverManager.getConnection(dbURL, userName, userPwd);


//调用存储过程
String userName = "";
String psd = "";
PreparedStatement cstmt = dbConn.prepareStatement("{call p_get_user(?,?)}");
cstmt.setString(1, userName);
cstmt.setString(2, psd);
ResultSet resultSet = preparedStatement.executeQuery();
if (resutlSet.next()) {
System.out.println(resultSet.getInt(1));
}
cstmt.close();
dbConn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
crazylaa 2010-01-20
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 kiver149 的回复:]
补充:数据库使用的是sqlserver 2005
[/Quote]
不会,路过。
kiver149 2010-01-20
  • 打赏
  • 举报
回复
补充:数据库使用的是sqlserver 2005
kiver149 2010-01-20
  • 打赏
  • 举报
回复
自己给顶一下

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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