您的位置:首页 > 数据库

如何读取配置文件并连接后台数据库,且对数据库进行操作实例(查询或修改等)

2017-10-27 00:00 1101 查看
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Properties;

public class Test {
public static void main(String[] args) {
// testPreparedStatement();
// testStatement();
testProperties();
testUpdate();
}

public static Properties getProperties() {
Properties prop = new Properties();
try {
// /加载属性列表
//InputStream in = new BufferedInputStream(new FileInputStream(
//"D:\\myselenium\\config.properties"));
//读取当前工程下的配置文件
InputStream in =Test.class.getResourceAsStream("/properties/config.properties");
//当配置文件粘贴到工程中,与类文件同级或放于一个文件夹内时,加载配置文件得用当前类名.class
prop.load(in);
} catch (IOException e) {
e.printStackTrace();
}
return prop;
}

public static void testUpdate() {

Properties prop = getProperties();

Connection con = null;// 创建一个数据库连接
// 创建预编译语句对象,一般都是用这个而不用Statement--PreparedStatement表示预编译的 SQL 语句的对象。
Statement statement = null;
ResultSet resultset=null;
try {
Class.forName(prop.getProperty("orcal.driverName"));// 加载Oracle驱动程序--返回与带有给定字符串名的类或接口相关联的 Class 对象
System.out.println("开始尝试连接数据库!");
String url = prop.getProperty("PA18dburl");// 127.0.0.1是本机地址,XE是精简版Oracle的默认数据库名
String user = prop.getProperty("PA18dbuser");// 用户名,系统默认的账户名
String password = prop.getProperty("PA18sdbpsw");// 你安装时选设置的密码
con = DriverManager.getConnection(url, user, password);// 获取连接--DriverManager类管理一组 JDBC 驱动程序的基本服务
System.out.println("连接成功!");
String sql1="update t_accepted_customer_info i set custname='王赛333' where i.userid='10517733'";
String sql = "select * from t_accepted_customer_info i where i.userid='10517733'";
statement=con.createStatement();
System.out.println(sql1);
int count = statement.executeUpdate(sql1);//增删改都用这个方法
System.out.println("count="+count);
if(count>0){
System.out.println("success");
}else{
System.out.println("失败");
}

resultset=	statement.executeQuery(sql);//查询SQL并保存到结果集
while (resultset.next()){
System.out.println("学号:" + resultset.getInt("id") + "姓名:"+ resultset.getString("custname")+"idno:"+resultset.getString("idno"));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
// 逐一将上面的几个对象关闭,因为不关闭的话会影响性能、并且占用资源
// 注意关闭的顺序,最后使用的最先关闭
if (statement != null)
statement.close();
if (statement != null)
statement.close();
if (con != null)
con.close();
System.out.println("数据库连接已关闭!");
} catch (Exception e) {
e.printStackTrace();
}
}
}

public static void testProperties() {

Properties prop = getProperties();

Connection con = null;// 创建一个数据库连接
PreparedStatement pre = null;// 创建预编译语句对象,一般都是用这个而不用Statement--PreparedStatement表示预编译的 SQL 语句的对象。
ResultSet result = null;// 创建一个结果集对象
try {
Class.forName(prop.getProperty("orcal.driverName"));// 加载Oracle驱动程序
System.out.println("开始尝试连接数据库!");
String url = prop.getProperty("PA18dburl");// 127.0.0.1是本机地址,XE是精简版Oracle的默认数据库名
String user = prop.getProperty("PA18dbuser");// 用户名,系统默认的账户名
String password = prop.getProperty("PA18sdbpsw");// 你安装时选设置的密码
con = DriverManager.getConnection(url, user, password);// 获取连接--DriverManager类管理一组 JDBC 驱动程序的基本服务
System.out.println("连接成功!");
String sql = "select * from t_accepted_customer_info i where i.custname=? and i.userid= ?";// 预编译语句,“?”代表参数
pre = con.prepareStatement(sql);// 实例化预编译语句--创建一个 PreparedStatement 对象来将参数化的 SQL 语句发送到数据库
pre.setString(1, "王赛");// 设置参数,前面的1表示参数的索引,而不是表中列名的索引
pre.setString(2, "10517733");// 设置参数,前面的1表示参数的索引,而不是表中列名的索引
result = pre.executeQuery();// 执行查询,注意括号中不需要再加参数-- 在此 PreparedStatement 对象中执行 SQL 查询,并返回该查询生成的 ResultSet 对象。
while (result.next())
// 当结果集不为空时
System.out.println("学号:" + result.getInt("id") + "姓名:"
+ result.getString("custname"));
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
// 逐一将上面的几个对象关闭,因为不关闭的话会影响性能、并且占用资源
// 注意关闭的顺序,最后使用的最先关闭
if (result != null)
result.close();
if (pre != null)
pre.close();
if (con != null)
con.close();
System.out.println("数据库连接已关闭!");
} catch (Exception e) {
e.printStackTrace();
}
}
}

public static void testPreparedStatement() {
Connection con = null;// 创建一个数据库连接
PreparedStatement pre = null;// 创建预编译语句对象,一般都是用这个而不用Statement
ResultSet result = null;// 创建一个结果集对象
try {
Class.forName("oracle.jdbc.driver.OracleDriver");// 加载Oracle驱动程序
System.out.println("开始尝试连接数据库!");
String url = "jdbc:oracle:"
+ "thin:@(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 10.25.167.101)(PORT = 1522))(ADDRESS = (PROTOCOL = TCP)(HOST = 10.25.167.102)(PORT = 1522))(LOAD_BALANCE = yes)(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = fatpa18)(FAILOVER_MODE = (TYPE = SELECT)(METHOD = BASIC)(RETRIES = 180)(DELAY = 5))))";// 127.0.0.1是本机地址,XE是精简版Oracle的默认数据库名
String user = "fat_dev";// 用户名,系统默认的账户名
String password = "paic1234";// 你安装时选设置的密码
con = DriverManager.getConnection(url, user, password);// 获取连接
System.out.println("连接成功!");
String sql = "select * from t_accepted_customer_info i where i.custname=? and i.userid= ?";// 预编译语句,“?”代表参数
pre = con.prepareStatement(sql);// 实例化预编译语句
pre.setString(1, "王赛");// 设置参数,前面的1表示参数的索引,而不是表中列名的索引
pre.setString(2, "21884");// 设置参数,前面的1表示参数的索引,而不是表中列名的索引
result = pre.executeQuery();// 执行查询,注意括号中不需要再加参数
while (result.next())
// 当结果集不为空时
System.out.println("学号:" + result.getInt("id") + "姓名:"
+ result.getString("custname"));
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
// 逐一将上面的几个对象关闭,因为不关闭的话会影响性能、并且占用资源
// 注意关闭的顺序,最后使用的最先关闭
if (result != null)
result.close();
if (pre != null)
pre.close();
if (con != null)
con.close();
System.out.println("数据库连接已关闭!");
} catch (Exception e) {
e.printStackTrace();
}
}
}

public static void testStatement() {
Connection con = null;// 创建一个数据库连接
Statement statement = null;// 创建预编译语句对象,一般都是用这个而不用Statement
ResultSet result = null;// 创建一个结果集对象
try {
String custName = "王赛";
Class.forName("oracle.jdbc.driver.OracleDriver");// 加载Oracle驱动程序
System.out.println("开始尝试连接数据库!");
String url = "jdbc:oracle:"
+ "thin:@(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 10.25.167.101)(PORT = 1522))(ADDRESS = (PROTOCOL = TCP)(HOST = 10.25.167.102)(PORT = 1522))(LOAD_BALANCE = yes)(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = fatpa18)(FAILOVER_MODE = (TYPE = SELECT)(METHOD = BASIC)(RETRIES = 180)(DELAY = 5))))";// 127.0.0.1是本机地址,XE是精简版Oracle的默认数据库名
String user = "fat_dev";// 用户名,系统默认的账户名
String password = "paic1234";// 你安装时选设置的密码
con = DriverManager.getConnection(url, user, password);// 获取连接
System.out.println("连接成功!");
statement = con.createStatement();
String sql = "select * from t_accepted_customer_info i where i.custname='"
+ custName + "'";// 预编译语句,“?”代表参数
result = statement.executeQuery(sql);// 执行查询,注意括号中不需要再加参数
while (result.next())
// 当结果集不为空时
System.out.println("学号:" + result.getInt("id") + "姓名:"
+ result.getString("custname"));
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
// 逐一将上面的几个对象关闭,因为不关闭的话会影响性能、并且占用资源
// 注意关闭的顺序,最后使用的最先关闭
if (result != null)
result.close();
if (statement != null)
statement.close();
if (con != null)
con.close();
System.out.println("数据库连接已关闭!");
} catch (Exception e) {
e.printStackTrace();
}
}
}
}

以下是整个工程的图片,包括配置文件(可建立一个FOLDER文件,把配置文件粘贴到文件夹中);

若粘贴配置文件到工程中,则需要指定配置文件的存放路径,即//InputStream in = new BufferedInputStream(new FileInputStream( //"D:\\myselenium\\config.properties"));,如



一、关于配置文件的创建如下:

1、先新建一个文本文档,修改后缀成.properties,这样就可以叫配置文件了

2、config.properties配置文件的编写内容类似如下:

orcal.driverName=oracle.jdbc.driver.OracleDriver

#PA18-UAT
PA18dburl=jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = spa181.dbstg.paic.com.cn)(PORT = 1521))(ADDRESS = (PROTOCOL = TCP)(HOST =spa182.dbstg.paic.com.cn)(PORT = 1521))(LOAD_BALANCE = yes)(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = hsspa18)(FAILOVER_MODE = (TYPE = SELECT)(METHOD = BASIC)(RETRIES = 180)(DELAY = 5))))
PA18dbuser=sisopr
PA18sdbpsw=pasc_stg_pa18

3、以上配置文件中的#号代表“注释”

二、下载java API帮助文档,查看 一些类或接口的方法及使用,能够尽快掌握编程方法,达到目的

三、连接数据库,必须下载ojdbc6-11.1.0.6.jar,然后添加JAR包到工程中(可先建个LIBS,把文件粘贴,然后右击添加),才能加载数据库驱动

四、自动化调用配置文件及连接后台数据库查询的编写思路:1、加载Oracle驱动程序;2、初始化连接串、用户名和密码,建立连接,连接数据库;3、连接数据库后,初始化SQL语名;4、对SQL语句发送到数据库进行编译;5、执行SQL,保存到结果集resultSet中;6、用.next()方法判断结果集,如不为空就通过游标一一输出 相应的结果;7、关闭连接等

注:JAVA中的异常处理,捕捉最大范围的异常才不会报错,异常范围太小会报异常,一般用Exception e

以下是自己写的一个查询数据库例子

package seleniumtest;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
import java.sql.Connection;

public class getPropertes {

public static void main(String[] args) {
testQuery();
}
public static Properties getPRO() {
Properties pro = new Properties();
pro.setProperty("PA18UAT", "11111111111111");
InputStream in = getPropertes.class.getResourceAsStream("config.properties");
try {
pro.load(in);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return pro;

}

public static void testQuery()
Properties pro = getPRO();
Connection conn = null;
Statement statement = null;
ResultSet result = null;

try {
Class.forName(pro.getProperty("orcal.driverName"));
// 创建连接
String url = pro.getProperty("PA18dburl");
String user = pro.getProperty("PA18dbuser");
String pwd = pro.getProperty("PA18sdbpsw");
conn = DriverManager.getConnection(url, user, pwd);
statement = conn.createStatement();
String sql = "select * from t_accepted_customer_info i where i.userid='10517733'";
result = statement.executeQuery(sql);
while (result.next()) {
System.out.println("id:" + result.getInt("id") + "\t"
+ "custname:" + result.getString("custname"));
}

} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
if (result != null) {
result.close();
}
if (conn != null) {
conn.close();
}
if (statement != null) {
statement.close();
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}

}


以下是另外写的一个简单打印出配置文件中的所有键与值 的代码:

public class PropertyTest {
public static void main(String[] args) {
Properties prop = new Properties();

try {// 读取属性文件config.properties--用输入流类把配置文件读取出来
//BufferedInputStream(InputStream in)  创建一个 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用,想当于创建一个缓冲区。
//InputStream in = new BufferedInputStream(new FileInputStream(
//"D:\\myselenium\\config.properties"));
//InputStream in = ClassLoader.class.getResourceAsStream("/properties/config.properties");//读取SRC下的配置文件
InputStream in=new FileInputStream("D:\\myselenium\\config.properties");
prop.setProperty("后管UAT", "http://soasadmin-stg.paic.com.cn/admin/admin/login.html");
prop.load(in); // /加载属性列表
Iterator<String> it = prop.stringPropertyNames().iterator();//stringPropertyNames方法返回一个Set键集,iterator()返回一个迭代元素的迭代器

while (it.hasNext()) {//如果仍有元素可以迭代,则返回 true
String key = it.next();//返回迭代的下一个元素

System.out.println(key + ":" + prop.getProperty(key));//获取指定键的属性值
}
in.close();

// /保存属性到b.properties文件
// FileOutputStream oFile = new FileOutputStream("config.properties",	true);//true表示追加打开
//prop.setProperty("phone", "10086");
//prop.store(oFile, "The New properties file");
// oFile.close();

} catch (Exception e) {
System.out.println(e);
}	}}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐