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

本文提供了一个Java程序示例,展示了如何使用PreparedStatement和Statement对象连接Oracle数据库,执行SQL查询和更新操作,同时介绍了配置文件的使用方法。
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"));,如

140442_vw4R_3563297.png

 

 

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

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);
		}	}}

 

 

 

转载于:https://my.oschina.net/u/3563297/blog/1557146

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值