Blog·Tanky WooABOUTRSS

Java数据库编程学习总结(1)

19 Dec 2011
这篇博客是从旧博客 WordPress 迁移过来,内容可能存在转换异常。

最近项目写的几个小工具一直是和数据库联系的,看的是《Java核心技术卷二》,感觉java的数据库编程这块内容还是比较多的,总结一下。

Java 数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。

用于jdbc编程的类都包含在java.sql和javax.sql两个包中。

一.首先是连接数据库,语法为:

// subprotocol用于指明连接到的数据库的特定支持驱动程序
// other stuffsubprotocol的不同而不同
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 教室