-
Java数据库操作
- 加载数据库驱动(一般使用Class.forName驱动程序规范写法的模式加载驱动)
- 加载数据库连接驱动的标准写法
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver);
- 加载MySQL数据库驱动的标准写法
Class.forName("com.mysql.jdbc.Driver);
- 加载SQL Server数据库驱动的标准写法
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver);
- 创建连接(Java中使用Connection接口描述数据库连接,通过DriverManager类的getConnection方法返回数据库连接)
Connection conn=null;
conn=DriverManager.getConnection(dburl,username,password);
- 创建状态
PreparedStatement stmt=null;
stmt=conn.preparedStatment(sql,resultSetType,resultSetConcurrency);
- 执行SQL语句并返回结果集(一般来说,select通过PreparedStatement状态的executeQuery执行,并返回结果集;而insert、delete、update三种DML(Data Manipulation Language)操作通过PreparedStatement状态的executeUpdate执行,返回int用于描述DML涉及的记录条数)
结果集游标rs定义为ResultSet类型,初始时指向第一条记录的上方。while(rs.next())可以看成两步操作:1.判断下一个指向是否有记录,有则返回true,反之为false。2.游标移动到下一个指向处
-
Java连接Access、MySQL数据库操作
JDK1.8中不再包含Access桥接驱动(删除公告:https://blogs.oracle.com/Lance/entry/removal_of_the_jdbc_odbc)
因此不再支持jdbc-odbc桥接方式,需要安装jdk1.6环境来编译。所以这里用Access_JDBC30.jar访问access,将Access_JDBC30.jar下载后,放在jre/lib/ext文件夹中。
Access_JDBC30.jar下载地址:http://www.hxtt.com/access.zip
- SELECT查询Access数据库
package database;
import java.sql.*;
public class accessQuery {
public static void main(String[] args) throws SQLException{
String dburl="jdbc:Access:///C:/Users/A1718/Documents/Database1.accdb";
//原来为:dburl="jdbc:odbc:driver={Microsoft Access Driver(*.mdb,*.accdb)};"+"DBQ=D:/student.accdb";
Connection conn=null;
PreparedStatement stmt=null;
ResultSet rs=null;
int count=0;
String stuid_key="100";
double math_key=0;
try{
Class.forName("com.hxtt.sql.access.AccessDriver");
//原来为:Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
System.out.println("驱动加载成功");
conn=DriverManager.getConnection(dburl);
String sql="select * from stuinfo where id > ? and ma > ?";
stmt=conn.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
stmt.setString(1, stuid_key);
stmt.setDouble(2, math_key);
rs=stmt.executeQuery();
System.out.println("StuID\t"+"StuName\t"+"Math\t"+"EN\t"+"HI\t");
while(rs.next()){
System.out.println(rs.getString(1)+"\t"+rs.getString(2)+"\t"+rs.getDouble(3)+"\t"+rs.getDouble(4)+"\t"+rs.getDouble(5)+"\t");
}
System.out.println("--------------------------------");
rs.previous();
count=rs.getRow();
System.out.println("检索出"+count+"条记录");
}
catch(SQLException e){
System.out.println(e);
}
catch(ClassNotFoundException e){
System.out.println("not found driver");
}
finally{
rs.close();
stmt.close();
conn.close();
System.out.println("over");
}
}
}
MySQL:
String dburl="jdbc:mysql://localhost:3306/student;
Class.forName("com.mysql.jdbc.Driver);
- INSERT、DELETE、UPDATE插入Access数据库
if(!rs.next()){
String insertsql="insert into stuinfo values(?,?,?,?,?)";
//“delete from stuinfo where stuid=?”
//“update stuinfo set stuname=?,match=?where stuname=?”
stmt=conn.preparedStatement(insertsql);
stmt.setString(1,insert_stuid);
.
.
.
stmt.executeUpdate();
}
- 利用结果集添加、删除、更新记录
设置ResultSet.CONCUR_UPDATABLE
//插入
rs.moveToInsertRow();
rs.updateString(1,insert_string);
.
.
.
rs.insertRow();
//删除
rs.deleteRow();
rs.previous();
网友评论