• JMeter数据库操作详解


    Jmeter提供了JDBC连接的插件,通过执行SQL语句的java API,实现对数据库的访问和查询,同时可以操作一次向数据库插入上百条上千条数据。

    一、安装驱动包

      将需要连接JDBC的jar包放入jmeter安装文件的lib文件中(也可测试计划中的导入)

    二、配置JDBC Connection configuration

      右键线程组→添加→配置元件→JDBC Connection configuration

        

      

    特别需要注意的是Validation  Query:针对mysql为默认填写Select1,但对于oracle来说:Select1   from  dual

    Variable Name:数据库连接池的名称,在使用JDBC Request时通过该连接池名称进行连接,因此在使用JDBC Request时输入的连接池名称要与JDBC Connection Configuration中的一致。

    Connection Pool Configuration中定义了基本配置,可以设置其为默认值。主要需要关注的是Database Configuration中的配置:

      Database URL:为数据库的URL,jdbc:mysql://服务器地址:监听端口/数据库名称

      JDBC Driver class:JDBC驱动。一般为com.mysql.jdbc.Driver 或 ort.gjt.mm.mysql.Driver

      Username:数据库的用户名

      Password:数据库密码

    三、设置JDBC Request
        

      Variable Name:数据库连接池的名称;

      Query Type:查询类型。例如,使用select查询时使用Select Statement,使用delete删除表时使用Update Statement;

      Query:在此可以使用数据库操作语句

      Parameter Name:引用的参数值

      Parameter Type:引用参数值的类型

      Variable name:使用sql语句返回的变量名

      Result Variable name:定义一个参数的名称用于保存sql查询结果的返回值

      Query time:设置定时器时间

      Handle Result:参数保存时的保存类型

        

    四、参数化的使用方法

      方式一:使用${变量名},例如:select   *  from  table1  where  pwd=${password}; 

      变量password可以通过用户自定义变量中设置,或者通过其他响应报文中提取出来的值

      方式二:使用Parameter Name

      使用占位符?来代替参数值,在Parameter Name中填入参数值,严格限制参数值的顺序。而Parameter Type中填入的是相对应的参数值类型

          

      方式三:使用Variable names

      在Variable names中设置的变量名对应代表了数据库中相应的列,利用逗号隔开,如A1代表第一列的所有内容,A3代表第三列的所有内容。若要取第一列第二行的内容,则可以用A1_2表示;

      若要取得A1列的总行数,则用A1_#表示,在外部引用该变量时可以直接利用${A1_2}获取,此时取的是第一列第二行的内容。

      

      下面利用BeanShell来打印A3_1和A1_#的值,即取第三行第一列的值和取第一列的行数

       

      通过查看控制台得:

     

    遇到的问题
    1、出现:java.sql.SQLException: No suitable driver found for jdbc:oracle:thin:@127.0.0.1:1521:ORCL错误
      解决原来是因为没有加载包的缘故解决方法:关闭jmeter,然后将class12.jar(电脑上搜索一下classes12.jar这个文件)复制到jmeter目录下面的lib目录中,重新启动运行即可。
     
     2、连接MySQL数据库时,出现:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown character set: 'utf8mb4'错误
      看起来似乎是设置字符的问题,后来在JDBC连接配置那里将Database URL加上字符编码即可(?characterEncoding=UTF-8)jdbc:mysql://127.0.0.1:3306/paydb?characterEncoding=UTF-8
     
     3、出现:org.apache.avalon.excalibur.datasource.NoAvailableConnectionException: Could not create enough Components to service your request (Timed out).
      解决方法:出现这个原因是因为连接超时,增大Pool TimeOUT就可以了。 
     
    4、执行时提示:ORA-00911: invalid character。
      解决方法:确保你在JDBC Request里面的Query中输入的SQL语句是正确的。注意:SQL语句后面不要添加分号

     附:数据库连接driverClass和jdbcUrl大全

    一、Mysql:

      driverClass:com.mysql.jdbc.Driver

          org.gjt.mm.mysql.Driver

      jdbcUrl:jdbc:mysql://192.168.0.1:3306/yourDBName

    二、oracle

      (thin模式)

      driverClass:oracle.jdbc.driver.OracleDriver

      jdbcUrl:jdbc:oracle:thin:@192.168.0.1:1521:yourDBName

    三、SQL Server:

      driverClass:com.microsoft.sqlserver.jdbc.SQLServerDriver(2005版本及以后)

                        com.microsoft.jdbc.sqlserver.SQLServerDriver(2000版本)

      jdbcUrl:jdbc:sqlserver://192.168.0.1:1433;databasename=yourDBName

    四、Sybase:

      driverClass:com.sybase.jdbc3.jdbc.SybDriver
                             com.sysbase.jdbc.SybDriver

      jdbcUrl:jdbc:sybase:Tds:127.0.0.1:5007/myDB

    五、DB2:

    1、db2java.zip

      driverClass:COM.ibm.db2.jdbc.NET.DB2Driver

      jdbcUrl:jdbc:db2://127.0.0.1:5000/DBNAME

    2、db2jcc.jar

      driverClass:com.ibm.db2.jcc.DB2DriverjdbcUrl:jdbc:db2://127.0.0.1:5000/DBNAME

    3、driverClass:com.ibm.db2.jdbc.app.DB2DriverjdbcUrl:jdbc:db2://127.0.0.1:5000/yourDBName

     

  • 相关阅读:
    Java面向对象(三)
    Java面向对象(二)
    Java面向对象(一)
    java基础(六)
    java基础(五)
    java基础(四)
    java基础(三)
    java基础2
    java基础
    计算机内存
  • 原文地址:https://www.cnblogs.com/wysk/p/7452353.html
Copyright © 2020-2023  润新知