这篇博客是从旧博客 WordPress 迁移过来,内容可能存在转换异常。
最近项目写的几个小工具一直是和数据库联系的,看的是《Java核心技术卷二》,感觉java的数据库编程这块内容还是比较多的,总结一下。
Java 数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。
用于jdbc编程的类都包含在java.sql和javax.sql两个包中。
一.首先是连接数据库,语法为:
// subprotocol用于指明连接到的数据库的特定支持驱动程序
// other stuff随subprotocol的不同而不同
jdbc:subprotocol:other stuff
二.建立连接:
DriverManager类用于选择数据库驱动程序和建立新的数据库连接。不过必须前注册才行,(System.setProperty方法)。注册后才可以连接数据库。
// 这一行是注册信息
System.setProperty("jdbc.drivers", "org.postgresql.Driver")
// 下面是打开一个数据库连接
String url= "jdbc:mysql://localhost:3306/dbname"
String username = "root"
String password = "xxxx"
Connection conn = DriverManager.getConnection(url, username, passsword);
这里书上用了.properties文件来读取注册信息和连接信息。
jdbc.drivers=org.postgresql.Driver
jdbc.url=jdbc:mysql://localhost:3306/dbname
jdbc.username=root
jdbc.password=xxxx
不过这里我有些疑问,先Mark一下:
那就是我在主文件读取jdbc.drivers的信息,但是我在.properties文件中把这一行注释掉了,为何还可以连接?即没有注册但是连接了?
以下这段代码可以直接用来每次读取属性文件并打开连接数据库:
/**
* Gets a connection from the properties specified in the file database.properties
* @return the database connection
*/
public static Connection getConnection() throws SQLException, IOException
{
Properties props = new Properties();
FileInputStream in = new FileInputStream("F:/DB/database.properties");
props.load(in);
in.close();
String drivers = props.getProperty("jdbc.drivers");
if (drivers != null)
System.setProperty("jdbc.drivers", drivers);
String url = props.getProperty("jdbc.url");
String username = props.getProperty("jdbc.username");
String password = props.getProperty("jdbc.password");
return DriverManager.getConnection(url, username, password);
}
然后在主方法可以:
Connection conn = getConnection();
三.创建JDBC Statement对象:
Statement stat = conn.createStatement();
要执行SQL命令,必须先创建一个Statement对象。
然后可以通过execute等语句执行SQL:
stat.execute("SELECT * FROM DBNAME" );
当执行完SELECT查询语句后,可以得到一个查询的结果(ResultSet对象):
ResultSet result = stat.getResultSet();
while(result.next())
{
xxxx;
}
关于java jdbc的官方doc: http://www.oracle.com/technetwork/java/javase/tech/index-jsp-136101.html
我勒个去,累了,下一次总结下元数据。。。
DATE:2011.12.19
By:Tanky Woo at 教室