java连接数据库mysql(一)
时间:2007-10-17 来源:guozhaojuan
1.加载数据库驱动程序.用户可以使用Class.forName("jdbc.DriverXXX")加载数据驱动程序,参数为jdbc驱动程序的名称,该名称要根据数据库jdbc驱动程序中使用的驱动程序类型而定.例如,Mysql数据库对应的驱动程序明为
com.mysql.jdbc.Driver.
2.获得数据库连接:通过DriverManager.getConnection(JDBCURL)可以获得数据库连接对象.MySQL的JDBCURL格式为jdbc:mysql://localhost:3306/数据库名称.建立数据库连接的代码举例:
Class.forName("com.mysql.jdbc.Driver");
String url="jdbc:mysql://localhost:3306/estore;
String user="root";
String pass="admin";
Connection con=DriverManager.getConnection(url,user,pass);
3.执行sql语句.执行sql语句是通过语句对象完成的.语句对象有如下三种:
(1)/*statement:
* statement对象可以通过connection对象的creatstatement方法建立,statement对象的主要方法有:
* executeQuery方法,执行查询语句select,将查到的记录以结果集的方式返回.
* executeUpdate方法,执行insert update delete操作
* execute执行查询语句(可以返回多个结果集),也可以执行更新操作
* 下面一段代码是建立statement对象并执行插入一条记录的sql语句:
* statement stmt=con.creatstatement();
* stmt.executeUpdate("insert into table values(v1,v2)");*/
(2)PreparedStatement:
/*创建表示预编译的sql语句的对象.sql语句经过预编译存储在preparedstatement对象中.然后通过此对象可以有效的执行此语句;
* preparedstatement接口继承statement,他们在两方面有所不同:
* 1.preparedstatement实例包含已编译的sql语句,这就是使语句准备好.包含在preparedstatement中的sql语句可具有一个或多个
* IN参数.IN参数的值在sql语句创建是未被指定.相反,该语句为每个IN参数保留一个问号作为站位符.每个问号的值必须在该语句执行之前通
* 过适当的set方法来提供
* 2.由于preparedstatement对象已被预编译过,所以其执行速度快于statement对象.因此多次执行的sql语句经常创建为preparedstatement
* 对象,以提高效率. 作为statement的子类,preparedstatement继承了statement的所有功能.另外,它还添加了一整套方法,用于设置发送给数据库以取代
*IN参数站位符的值.同时,execute executeQuery executeUpdate三种方法已被更改使之不再需要参数.这些参数的statement
* 形式不应该用于preparedstatement对象.创建preparedstatement对象的方法如下:
* preparedstatement pstmt=con.preparedstatement("Update table set m=?where x=?");
* 其中pstmt对象包含语句,它已发送给数据库,并为执行做好准备.在执行ps之前,必须设置每个"?"参数的值,这可通过调用setXXX方法来完成
* 其中XXX是与该参数相应的类型.setXXX的第一个参数表示要设置的参数的序数,第二个表示要设置的参数的值.*/
4.处理结果集
/* (1).取当前记录的列值
* resultset类提供了一系列的get方法(每一种数据类型定义了一种get方法),使用与列数据类型对应的get方法可以取得该列的值.
* 例如,加入与表A对应的结果集为rs,则rs.getString("a")可以返回当前记录a列的值
* (2).结果集的滚动.
rs.next();
* (3).取得结果集信息.
* 用户可以使用resultsetmetadata对象获取结果集信息(通过resultset的getmeta data()方法获得resultsetmetadata对象
* .例如:
* resultset rs=stmt.getresultset();
* resultsetmetadata rsmd=rs.getmetadata();
* int columecount=rsmd.getcolumncount();
* for(i=1;i<=columncount;i++)
* rsmd.getclumname();*/
5.关闭连接
建立连接后一定要及时关闭,关闭连接使用Connection对象的close()方法.
com.mysql.jdbc.Driver.
2.获得数据库连接:通过DriverManager.getConnection(JDBCURL)可以获得数据库连接对象.MySQL的JDBCURL格式为jdbc:mysql://localhost:3306/数据库名称.建立数据库连接的代码举例:
Class.forName("com.mysql.jdbc.Driver");
String url="jdbc:mysql://localhost:3306/estore;
String user="root";
String pass="admin";
Connection con=DriverManager.getConnection(url,user,pass);
3.执行sql语句.执行sql语句是通过语句对象完成的.语句对象有如下三种:
(1)/*statement:
* statement对象可以通过connection对象的creatstatement方法建立,statement对象的主要方法有:
* executeQuery方法,执行查询语句select,将查到的记录以结果集的方式返回.
* executeUpdate方法,执行insert update delete操作
* execute执行查询语句(可以返回多个结果集),也可以执行更新操作
* 下面一段代码是建立statement对象并执行插入一条记录的sql语句:
* statement stmt=con.creatstatement();
* stmt.executeUpdate("insert into table values(v1,v2)");*/
(2)PreparedStatement:
/*创建表示预编译的sql语句的对象.sql语句经过预编译存储在preparedstatement对象中.然后通过此对象可以有效的执行此语句;
* preparedstatement接口继承statement,他们在两方面有所不同:
* 1.preparedstatement实例包含已编译的sql语句,这就是使语句准备好.包含在preparedstatement中的sql语句可具有一个或多个
* IN参数.IN参数的值在sql语句创建是未被指定.相反,该语句为每个IN参数保留一个问号作为站位符.每个问号的值必须在该语句执行之前通
* 过适当的set方法来提供
* 2.由于preparedstatement对象已被预编译过,所以其执行速度快于statement对象.因此多次执行的sql语句经常创建为preparedstatement
* 对象,以提高效率. 作为statement的子类,preparedstatement继承了statement的所有功能.另外,它还添加了一整套方法,用于设置发送给数据库以取代
*IN参数站位符的值.同时,execute executeQuery executeUpdate三种方法已被更改使之不再需要参数.这些参数的statement
* 形式不应该用于preparedstatement对象.创建preparedstatement对象的方法如下:
* preparedstatement pstmt=con.preparedstatement("Update table set m=?where x=?");
* 其中pstmt对象包含语句,它已发送给数据库,并为执行做好准备.在执行ps之前,必须设置每个"?"参数的值,这可通过调用setXXX方法来完成
* 其中XXX是与该参数相应的类型.setXXX的第一个参数表示要设置的参数的序数,第二个表示要设置的参数的值.*/
4.处理结果集
/* (1).取当前记录的列值
* resultset类提供了一系列的get方法(每一种数据类型定义了一种get方法),使用与列数据类型对应的get方法可以取得该列的值.
* 例如,加入与表A对应的结果集为rs,则rs.getString("a")可以返回当前记录a列的值
* (2).结果集的滚动.
rs.next();
* (3).取得结果集信息.
* 用户可以使用resultsetmetadata对象获取结果集信息(通过resultset的getmeta data()方法获得resultsetmetadata对象
* .例如:
* resultset rs=stmt.getresultset();
* resultsetmetadata rsmd=rs.getmetadata();
* int columecount=rsmd.getcolumncount();
* for(i=1;i<=columncount;i++)
* rsmd.getclumname();*/
5.关闭连接
建立连接后一定要及时关闭,关闭连接使用Connection对象的close()方法.
相关阅读 更多 +