安全方便写法
新建一个文本资源文件:rec.properties写配置信息
#odbc-jdbc桥接方式此方法可以桥接任意ODBC支持的数据库
#driver="sun.jdbc.odbc.JdbcOdbcDriver";
#url="jdbc:odbc:weasel"; ##最后是数据源名称;
#user="sa"; ##数据源指定的用户名;
#password="";
#
#纯JDBC的SQL SERVER 驱动
#为特定数据库分配一个账号以后,URL就不用DatabaseName项了;
#当然user,password就是使用分配的user,password
#driver="com.microsoft.jdbc.sqlserver.SQLServerDriver";
#url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs";
#user="sa";
#password="";
#ORACLE的部分JAVA驱动程序
#driver=oracle.jdbc.OracleDriver
#url=jdbc:oracle:oci8@localhost ## @ SID
#user=scott
#password=tiger
#ORACLE的纯JAVA驱动程序
driver=oracle.jdbc.OracleDriver
url=jdbc:oracle:thin:@localhost:1521:weasel
user=scott
password=tiger
写一个获取连接串的程序:DbConfig.java程序:
package text;
import JAVA.util.ResourceBundle;
public class DbConfig {
static final String dbresource = "text.rec"; //注意这里是包路径
static ResourceBundle resources = ResourceBundle.getBundle(dbresource);
static public String getString(String key){
return resources.getString(key);
}
}
这里是连接程序:DBConn.java
package text;
import JAVA.sql.Connection;
import JAVA.sql.DriverManager;
import JAVA.sql.SQLException;
public class DBConn {
public static Connection getConnection(){
final String driver = DbConfig.getString("driver");
final String url = DbConfig.getString("url");
final String user = DbConfig.getString("user");
final String password = DbConfig.getString("password");
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;
}
}
其它程序就可以引用以上程序,改变据库只要修改配置文件就可以了。
Insert program:
package text;
import JAVA.sql.Connection;
import JAVA.sql.PreparedStatement;
import JAVA.sql.SQLException;
import JAVA.sql.Timestamp;
public class PrepareInsertText {
public static void main(String[] args){
final String isql="insert into emp values(?,?,?,?,?,?,?,?)";
Connection conn=DBConn.getConnection();
PreparedStatement pstmt=null;
try{
pstmt= conn.prepareStatement(isql);
pstmt.setDouble(1,8004);
pstmt.setString(2,"bbb");
pstmt.setString(3,"bbb");
pstmt.setInt(4,111);
pstmt.setTimestamp(5,Timestamp.valueOf(("2001-12-21 00:00:00")));
pstmt.setInt(6,1300);
pstmt.setInt(7,0);
pstmt.setInt(8,20);
pstmt.executeUpdate(); //提交处理
}catch(SQLException e){
e.printStackTrace(); //此处可以不写,就可以不弹出错误码信息
}finally{
try {
if(pstmt != null){
pstmt.close();
}
if (conn != null) {
conn.close();
}
} catch (Exception ex) {
} }
System.out.println("End.");
}
}
Update program:
package text;
import JAVA.sql.Connection;
import JAVA.sql.PreparedStatement;
import JAVA.sql.SQLException;
public class PrepareUpdateText {
public static void main(String[] args ){
final String usql = "update emp set sal = sal + 100 where empno =?";
Connection conn = DBConn.getConnection();
PreparedStatement pstmt = null;
try {
pstmt = conn.prepareStatement(usql);
int[] empnoes = {8001,8002};
for(int i = 0; i <empnoes.length; i++){
pstmt.setInt(1, empnoes[i]);
pstmt.executeUpdate();
}
}
// catch
}
Select program:
package text;
import JAVA.sql.Connection;
import JAVA.sql.PreparedStatement;
import JAVA.sql.ResultSet;
import JAVA.sql.ResultSetMetaData;
import JAVA.sql.SQLException;
public class PrepareSelectText {
public static void main(String[] args){
final String isql="select * from emp where empno=?";
Connection conn=DBConn.getConnection();
PreparedStatement pstmt=null;
try{
pstmt= conn.prepareStatement(isql);
pstmt.setDouble(1,7931);
ResultSet rs=pstmt.executeQuery();
ResultSetMetaData rsmd=rs.getMetaData();
int colCount = rsmd.getColumnCount();
while(rs.next()){
for(int i=0;i<colCount;i++){
System.out.print("/t"+rs.getObject(i+1));
}
System.out.println();
}
rs.close();
}
//catch
}
//事务处理
package text;
import JAVA.sql.Connection;
import JAVA.sql.SQLException;
import JAVA.sql.Statement;
public class UpdateText {
public static void main(String[] args){
String sql1 = "update emp set sal = sal + 200 where empno = 8801";
String sql2 = "update emp set sal = sal - 200 where empno = 8802";
Connection conn = DBConn.getConnection();
if(conn == null) return;
Statement stmt = null;
try {
System.out.println("Transaction Level =" + conn.getTransactionIsolation()); //显示事务级别
//设置提交模式
conn.setAutoCommit(false); //自动提交为否
stmt = conn.createStatement();
stmt.executeUpdate(sql1);
stmt.executeUpdate(sql2);
conn.commit(); //提交事务
} catch (SQLException e) {
try {
conn.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
e.printStackTrace();
} finally{
if(stmt != null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
} }
}
System.out.println("end.");
}
}