总结表述能力太有限,还是大篇幅描述一下自己的小程序吧。主要是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;
}
}
网友评论