mysql in语句在java中的使用

做权限的时候,通过role角色中的roleid,在auth权限中查找角色对应的权限。

sql语句:

SELECT authName from auth where authId in (1,2,3,4,5)

in后面的东西即是角色所具有的各个权限的id,可以查出1,2,3,4,5对应的权限名字。

于是结合auth表,直接使用,sql语句为:

SELECT authName from auth where authId in (SELECT authIds from role  where roleId=1)

后面查出来的即是1,2,3,4,5这样的内容。实际中,这样会出错,并不能查出预料的结果。in后面的内容应该是("字段1",“字段2”,...),上面那种查出来的,应该是这种格式的 in ("1,2,3,4,5"),把1,2,3,4,5这五个当做一个字符串了。

然后在java代码中,可以避免这个问题,主要是因为java的string的拼接,可以方便地组装in后面括号里面的数据格式。

下面一段示例代码,就是达到想要的结果。

public static void main(String[] args) throws Exception {
        // TODO Auto-generated method stub
        DbUtil dbUtil=new DbUtil();
        Connection connection=dbUtil.getCon();
        String hql="SELECT authIds from role  where roleId=1";
        PreparedStatement preparedStatement2=connection.prepareStatement(hql);
        ResultSet resultSet2=preparedStatement2.executeQuery();
        String authid=null;
        while(resultSet2.next()){
            authid=resultSet2.getString("authIds");
            System.out.println("authids:"+resultSet2.getString("authIds"));
        }

        String sql="SELECT authName from auth where authId in ("+authid+")"; //拼接sql语句
        PreparedStatement preparedStatement=connection.prepareStatement(sql);
        ResultSet resultSet=preparedStatement.executeQuery();
        while(resultSet.next()){
            System.out.println("authname:"+resultSet.getString("authName"));
        }
    }

mysql in语句在java中的使用

时间: 2025-01-07 00:01:25

mysql in语句在java中的使用的相关文章

Java中的语句

一.if语句 1.if条件语句 语法: 注意哦:如果 if 条件成立时的执行语句只有一条,是可以省略大括号滴!但如果执行语句有多条,那么大括号就是不可或缺的喽~~ 2.if...else语句 if...else 语句的操作比 if 语句多了一步:  当条件成立时,则执行 if 部分的代码块: 条件不成立时,则进入 else 部分. 语法: 3.多重 if 语句 在条件 1 不满足的情况下,才会进行条件 2 的判断:当前面的条件均不成立时,才会执行 else 块内的代码. 语法: 当需要判断的条件

Java中抛出的各种异常

目录(?)[-] 引子 JAVA异常 处理异常机制 捕获异常trycatch 和 finally try-catch语句 trycatch-finally语句 try-catch-finally 规则异常处理语句的语法规则 trycatchfinally语句块的执行顺序 抛出异常 throws抛出异常 使用throw抛出异常 Throwable类中的常用方法 Java常见异常 runtimeException子类 IOException 其他 自定义异常 1. 引子 try…catch…fina

Java中sql语句的引号问题

1..sql语句 在数据库中,当我们查询语句时,会使用类似的语句: Select * from userinfo where userid='1' or 1; Select * from userinfo where username="jfl"; 2.问题 Java通常需要连接数据库(Mysql,Oracle等)进行操作,在查询语句块中经常会用到where子句,在这里我们需要注意引号问题. 3.实例 在java中,我们需要将where子句的关键词变成变量,例如userid,usern

在java中使用mysql

在java中使用mysql 概略 安装环境:windows 10, eclipse 安装mysql运行mysql并且新建数据库feedback将所需的jar添加到工程里在代码中连接数据库并且进行查询 安装mysql 下载地址:mysql-install-community下载 下载后 安装sqlserver就行了,其他的应该暂时还不需要用到,最后需要设置密码,要记住,在后面我们需要使用账号密码登陆数据库. 运行mysql,新建数据库 登陆数据库 进入mysql的安装目录下,进入bin目录,默认应

JAVA中连接mysql数据库

上周做了数据库的课程设计,用的是java语言和mysql数据库,其中就涉及java连接数据库的相关知识. 首先我们需要添加一个jar文件,就相当于连接的一个驱动文件,这里我添加的是这个文件:mysql-connector-java-5.1.13-bin.jar 然后我们就可以进行数据库的连接了,在java里面进行一些数据库中的操作:增,删,改,查: 然后在java中创建一个user类,在mysql中创建一个user表: package entity; public class user { pr

【Mysql】Java中对Mysql数据库的增删改查、Java的System类

这部分也是所谓JDBC.网站数据源的内容,把名字弄得很高深似得,实际上只是Java中对Mysql数据库的增删改查的内容.非常简单,之前写了这么多Mysql的内容,没好好总结一下,实在是不应该.今天就实现一个Java中对Mysql数据库的增删改查,随便带点Java取出当前系统的系统名与系统时间的知识,完成一个还算有点意思的小例子. 一.基本目标 首先,在Mysql数据库中有一张名为testtable的空表,id为自增列,username,class都是文本列,但是class里面都存放数字,也就是整

java中向Mysql插入中文字符出现乱码

昨天新建了个Mysql数据库表,在JAVA中插入中文字符时,发现数据库中的插入结果是乱码.实际是字符集不符合问题. 针对这个问题的解决方法有很多,例如这个文章java与mysql乱码的问题不过我建议将表删掉重新建表,建表时默认字符集设置为UTF-8,这样可以避免以后出现各种问题. 可以通过语句show create table table_name来查看该表的编码格式.例如我的是: CREATE TABLE `blog` ( `title` varchar(30) NOT NULL DEFAUL

Java中条件语句和if-else的嵌套原则

if(condition)Statement 在此时的条件语句中的条件是需要用括号把它括起来.   其实,Java中的条件语句和C/C++中的是一样的.而Java常常希望在某个条件为真的时候执行多条语句.此时,我们就会引入一个概念,那就是"块模块(block statement)",具体格式如下,仅供参考: { statement1 statement2 ... } 就拿下面的例子,我们来试试上面的这个格式吧! if(score>=90) system.out.println(&

java中的Switch case语句

java中的Switch case 语句 在Switch语句中有4个关键字:switch,case break,default. 在switch(变量),变量只能是整型或者字符型,程序先读出这个变量的值,然后在各个"case"里查找哪个值和这个变量相等,如果相等,则条件成立,程序执行相应的分支,直到碰上break或有switch语句结束. 有几个需要着重注意的地方. 第一,前面说了switch(变量),只能是整型和字符类型. 第二,case之后是直接的常量数值. 第三,break使得程