Java-动态参数连接mysql

总结表述能力太有限,还是大篇幅描述一下自己的小程序吧。主要是java中一些对mysql的操作,比如创建表,查询表,以及随机查询表中的几条记录。可参考MySQL Java tutorial,本篇文章详细介绍一下如何随机查询表中的几条记录。手册中给出的只有url一个参数,我的要求是表名,以及几条记录都作为参数,由用户自定义的,所以,就要涉及到mysql语句的拼接问题了。想来想去也只能用字符串拼接了,还是直接贴代码,代码中注释。欢迎有需要的小伙伴参考,也欢迎各路大神指教。

import java.io.IOException;
import java.sql.*;

/**
 * Created by xh on 17-7-26.
 * 随机读取数据库中的size条记录,注意,tableName及记录的条数作为参数传入,所以需要用到字符串拼接,StringBuffer()
 * append()方法,另外需要转换成字符串的时候使用.toString()即可
 */
public class ReadSqlrecorderRandom {
    public static void main(String[] args) throws IOException {
        getRecordsRandom("jdbc:mysql://数据库","表",记录的数量);
    }
    public static ResultSet getRecordsRandom(String url, String tableName,int size) throws IOException {
        Connection con = null;
        PreparedStatement pst = null;
        ResultSet rs = null;
        String user = "root";
        String password = "passwd";
        try {

            con = DriverManager.getConnection(url, user, password);
            StringBuffer sql=new StringBuffer("SELECT * FROM  ");
            if(tableName !=null){
               sql.append(tableName);
               sql.append(" order by rand() LIMIT ");
               sql.append(size);
            }

            //pst = con.prepareStatement("SELECT * FROM" +tableName+ "order by rand() LIMIT" +size+ "");
            pst = con.prepareStatement(sql.toString());
            rs = pst.executeQuery();

            while (rs.next()) {

                System.out.print(rs.getInt(1));
                System.out.print(": ");
                System.out.println(rs.getString(2));
            }

        } catch (SQLException ex) {
            ex.printStackTrace();
            //Logger lgr = Logger.getLogger(RetrieveAll.class.getName());
            // lgr.log(Level.SEVERE, ex.getMessage(), ex);

        } finally {

            try {

                if (rs != null) {
                    rs.close();
                }

                if (pst != null) {
                    pst.close();
                }

                if (con != null) {
                    con.close();
                }

            } catch (SQLException ex) {
                ex.printStackTrace();
                //Logger lgr = Logger.getLogger(getRecordsRandom().class.getName());
                //lgr.log(Level.WARNING, ex.getMessage(), ex);
            }
        }
        return  rs;
    }
}

你可能感兴趣的:(Java-动态参数连接mysql)