在长期使用数据库的童鞋,你有没有想想的你的数据库链接是否合理,最优。
个人的一点学习心得,分享下
1、先看一个最简单的mysql数据库的链接,代码如下:
/**
* 一个简单的链接
*/
public static Connection getConn(){
String url = "jdbc:mysql://192.168.0.1:3306/yourdatabasename?characterEncoding=utf8";
String password = "123456";
String user = "root";
String driver = "com.mysql.jdbc.Driver";
Connection conn = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return conn;
}
/**
* 一个简单的测试
*/
public static void testSQLConn(){
Connection conn = SQLCONNUtil.getConn();
ResultSet rs = null;
try {
Statement st = conn.createStatement();
rs = st.executeQuery("select * from tablename limit 3;");
while (rs.next()){
System.out.println(rs.getObject(1)+"\t"+rs.getObject(2));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if(rs != null){
rs.close();
rs = null;
}
if(conn != null){
conn.close();
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
问题1:如果写完了上面的代码,当你运行的时候,发现报错有些driver类找不到,那就看看你的工程,你的mysql数据库链接包有没有导入工程,本空间里有对应mysql和mssql的链接jar包,都是官网上下的,可以放心使用,或者你自己去官网上下载也行。(Java语言通过JDBC技术访问数据库。JDBC是一种“开放”的方案,它为数据库应用开发人员﹑数据库前台工具开发人员提供了一种标准的应用程序设计接口,使开发人员可以用纯Java语言编写完整的数据库应用程序。JDBC提供两种API,分别是面向开发人员的API和面向底层的JDBC驱动程序API,底层主要通过直接的JDBC驱动和JDBC-ODBC桥驱动实现与数据库的连接。所以使用不同的数据库需要引入不同数据库厂商提供的链接jar包)
问题2:上面的代码是不是可以改进下?如果你的工程已经打包上传至服务器,但是发现数据库名称不一致,总不能改了类,在上传一次吧,这样太麻烦,不够灵活。在你的工程里引入config.properties文件,然后把对应的信息写入文件,在我们使用数据库时直接读config.properties即可,这样对于修改也就变得相对简单了。(读取配置文件,可以参考下面的文章)
问题3:既然数据库是这么常用的工具,是不是应该有人已经给我们提供数据库操作的各种类?是的,hibernate,Spring都有做这些事情,不过这些框架都比较大,引入的同时必然会引入一些额外的东西,还有就是你自己要扩展自己的知识,倚天剑削铁如泥,用好了可以杀敌于无形,用不好也会伤己的,如果有大的需求,那就认真学习下,在使用了。
问题4:我们使用数据库的一般步骤是:(1)取得与数据库的链接;(2)发出sql语句;(3)断开链接;当我们做一些造作时,频繁的链接断开造作是对数据库资源的浪费,如果我们能够建一个连接池,在我们使用之处,已经做好了一些链接,我们使用的时候直接从连接池中取,用完了在放回去,这样效率就会得到提高。现在应用比较多的连接池有:c3p0,DBCP,BoneCP (据说BoneCP 比前两个平均快很多)这个有兴趣的可以去试试。
问题5:java链接msslq2008,上面是链接mysql相关的,下面给一个简单的链接mssql2008的例子,数据库链接的jar包,jdbc4.jar可以去我的空间里下载,代码如下:
/**
* 通过Microsoft JDBC驱动获得数据库连接
* @return Connection
*/
public static void getConnection() {
Connection conn = null;
Statement stmt;
ResultSet rs;
String url = "jdbc:sqlserver://10.11.5.250:1433;DatabaseName=yourdatabase";
String uid = "root";
String pwd = "123456";
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
conn = DriverManager.getConnection(url, uid, pwd);
stmt = conn.createStatement();
StringBuilder sql = new StringBuilder("select * from yourtable");
rs = stmt.executeQuery(sql.toString());
while (rs.next()){
System.out.println(rs.getObject(1)+"\t"+rs.getObject(2));
}
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
} catch (Exception ex) {
ex.printStackTrace();
}
return ;
}