myeclipse连接数据库oracle(添加jdbc.properties)
第一步:在src下面建一个包com.xsl.conf
第二步:在建好的包下面新建一个jdbc.properties
第三步:在jdbc.properties里写入内容如下:
driver = oracle.jdbc.driver.OracleDriver
url = jdbc:oracle:thin:@127.0.0.1:1521:orcl或jdbc:oracle:thin:@localhost:1521:orcl
uname = scott
upwd = tiger
第四步:建BaseDao
package com.xsl.dao; import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties; import com.xsl.entity.Student; public class BaseDao { private static Properties ps = new Properties(); static{
InputStream is = BaseDao.class.getClassLoader().getResourceAsStream("com/xsl/conf/jdbc.properties");
try {
ps.load(is);
System.out.println(ps);
} catch (IOException e) {
e.printStackTrace();
}
} /**
* 获得数据库连接
*/
public static Connection getConnection(){
Connection conn = null;
try {
Class.forName(ps.getProperty("driver")); //"oracle.jdbc.driver.OracleDriver"
conn = DriverManager.getConnection(ps.getProperty("url"),ps.getProperty("uname"),ps.getProperty("upwd")); //"jdbc:oracle:thin:@127.0.0.1:1521:orcl","scott","tiger"或//"jdbc:oracle:thin:@localhost:orcl","scott","tiger"
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
} /**
* 添加
* @param obj:需要被保存的对象
* @return 受影响的行数
*/
public static int save(Object obj){
//insert into 表名(列名1,列名2...) values(?,?...)
int row = 0;
//获取需要被保存实体对象的Class类型的对象
Class c = obj.getClass();
//获取实体类中的属性对象
Field [] fs = c.getDeclaredFields();
//给属性对象解锁
Field.setAccessible(fs, true);
//拼SQL语句
StringBuffer sql = new StringBuffer();
sql.append(" insert into ");
sql.append(c.getSimpleName());//添加表名
sql.append(" ( ");
for(int i=1;i<fs.length;i++){//添加列名
sql.append(fs[i].getName());
if(i<fs.length-1){//判断没有到最后一个列
sql.append(" , ");
}
}
sql.append(" ) ");
sql.append(" values (");
for(int i=1;i<fs.length;i++){
sql.append(" ? ");
if(i<fs.length-1){
sql.append(" , ");
}
}
sql.append(" ) ");
System.out.println(sql);
Connection conn = getConnection();
PreparedStatement pstmt = null;
try {
pstmt = conn.prepareStatement(sql.toString());
//给占位符赋值
for(int i=1;i<fs.length;i++){
//stu.getName();stu.getMoney();
//fs[i].get(obj)从obj这个对象中获取fs[i]这个属性对应的值
pstmt.setObject(i, fs[i].get(obj));
}
row = pstmt.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}finally{
closeAll(conn, pstmt, null);
}
return row;
} /**
* 查询
*/
public static List queryList(Class c){
List list = new ArrayList();
Field [] fs = c.getDeclaredFields();
Field.setAccessible(fs, true);
//select * from 表名
StringBuffer sql = new StringBuffer();
sql.append(" select * from ");
sql.append(c.getSimpleName());
Connection conn = getConnection();
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
pstmt = conn.prepareStatement(sql.toString());
rs = pstmt.executeQuery();
while(rs.next()){
//Student stu = new Student();
//stu.setName(rs.getString("name"));
//stu.setMoney(rs.getDouble("money"));
Object obj = c.newInstance();
for(int i=0;i<fs.length;i++){
//fs[i].get(obj);stu.getName();
//fs[i].getName()获取属性名
//rs.getObject(Objet obj)在结果集中按列名取值
//fs[i].set(obj,value);调用属性的赋值方法,给属性赋值
fs[i].set(obj, rs.getObject(fs[i].getName()));//stu.setName(rs.getString("name"));
}
list.add(obj);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
closeAll(conn, pstmt, rs);
}
return list;
} /**
* 删除
*/
public static int delete(Object obj){
int row = 0;
//delete from 表名 where 主键=?
Class c = obj.getClass();
Field [] fs = c.getDeclaredFields();
Field.setAccessible(fs, true);
StringBuffer sql = new StringBuffer();
sql.append(" delete from ");
sql.append(c.getSimpleName());
sql.append(" where ");
sql.append(fs[0].getName());
sql.append(" = ?");
//System.out.println(sql);
Connection conn = getConnection();
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
pstmt = conn.prepareStatement(sql.toString());
pstmt.setObject(1, fs[0].get(obj));
row = pstmt.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}finally{
closeAll(conn, pstmt, rs);
}
return row;
} /**
* 关闭数据库连接
*/
public static void closeAll(Connection conn,Statement pstmt,ResultSet rs){
try{
if(rs!=null){
rs.close();
}
if(pstmt!=null){
pstmt.close();
}
if(conn!=null){
conn.close();
}
}catch (Exception e) {
e.printStackTrace();
}
} public static void main(String[] args) {
//System.out.println(getConnection());
//save(new Student("刘二狗",888,new Date(System.currentTimeMillis())));
/*List<Student> list = queryList(Student.class);
for(Student stu:list){
System.out.println(stu.getId()+"\t"+stu.getName()+"\t"+stu.getMoney()+"\t"+stu.getBrithday());
}*/
delete(new Student(16)); }
}
测试
public class Test
{
public static void main(String[] args)
{
//1、获取hibernate中的配置信息(获取数据库的详细信息)
Configuration cofig = new Configuration().configure();
//2、创建session工厂
SessionFactory factory = config.buildSessionFactory();
//3、获取session对象(connection)
Session session = factory.openSession();
//4、开启事务
session.beginTransaction(); Student s = new Student();
s.setAge(11);
s.setName("xsl"); //5、保存
session.save(s);
//6、事务提交
session.getTransaction().commit();
//7、session关闭
session.close();
}
}
myeclipse连接数据库oracle(添加jdbc.properties)的更多相关文章
- myeclipse连接数据库oracle
package xsl; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStat ...
- Myeclipse连接数据库删除数据库(JDBC)
package com.test.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Pr ...
- oracle的jdbc.properties文件配置
----------Oracle #do Oracle JDBC jdbc.driverClassName=oracle.jdbc.driver.OracleDriverjdbc.url=jdbc:o ...
- MyEclipse 连接Oracle数据库(初学者必看)
前言:刚接触Oracle数据库,便有一个需求,编写控制台程序,实现主人登录.数据库为Oracle.下面详细介绍一下MyEclipse 连接Oracle数据库. package DbHelp; im ...
- JDBC课程1-实现Driver接口连接mysql数据库、通用的数据库连接方法(使用文件jdbc.properties)
package day_18; import jdk.internal.util.xml.impl.Input; import org.junit.Test; import java.io.Input ...
- maven项目无法导入Oracle的jdbc连接jar包【我】
导入一个maven项目,启动一直报错 找不到Oracle的jdbc连接驱动Class, 用Eclipse导入 ojdbc14.jar 连接包,各种方法都无效,无法引入到部署后的lib目录中,可以直接放 ...
- 转:ORACLE的JDBC连接方式:OCI和THIN
oracle的jdbc连接方式:oci和thin oci和thin是Oracle提供的两套Java访问Oracle数据库方式. thin是一种瘦客户端的连接方式,即采用这种连接方式不需要安装oracl ...
- 利用MyEclipse连接数据库并自动生成基于注解或者XML的实体类
一.利用MyEclipse连接数据库 1. 打开MyEclipse的数据库连接视图 然后在Other中找到"MyEclipse Database"中的DB Browser 2. 在 ...
- Java添加JDBC
添加JDBC 1.SQL Server SQL Server2005 下载 sqljdbc_4.0 https://www.microsoft.com/en-us/download/details.a ...
随机推荐
- C++11改进我们的程序之简化我们的程序1
C++11改进我们的程序之简化我们的程序(一) C++11在很多方面可以简化我们的程序开发,我会在“简化我们的程序”这一系列的博文中一一讲到,敬请关注.这次要讲的是:C++11如何通过获取函数模板的返 ...
- Ubuntu环境变量设置
在配置Ubuntu里面的JDK环境变量时,从网上找到的资料各异,在不同的文件里面配置,如/etc/environment./etc/profile,环境变量设置都是可以的.但是难免会有其它的疑问,不同 ...
- 使用js加载图像和setDataXML()加载数据
使用js加载图像和setDataXML()加载数据 前面一篇对FusionCharts进行了一个简单的介绍,而且建立了我们第一个图形,但是那个是在HTML中使用<OBJECT>和<E ...
- 在路由器上搭建SVN服务器
在路由器上搭建SVN服务器 SVN托管服务大家都不陌生了,我最早开始用的是谷歌提供的SVN,因为在上面托管的项目都是开源的,所以当有些项目不方便在网上公开的时候,就需要自己搭建SVN服务器了.wind ...
- java.lang.NoClassDefFoundError: com.umeng.analytics.MobclickAgent
07-24 09:58:23.239: E/AndroidRuntime(29487): FATAL EXCEPTION: main 07-24 09:58:23.239: E/AndroidRunt ...
- 【OpenMesh】使用迭代器和循环机
原文出处: http://openmesh.org/Documentation/OpenMesh-Doc-Latest/tutorial.html 这个例子展现: 如何使用迭代器 如何使用循环机 这个 ...
- hdu2534-Score
http://acm.hdu.edu.cn/showproblem.php?pid=2534 由题知, 每一个数据都可以由ax +by组成: ax1 + by1 - c x2 a - d y2 == ...
- Tungsten Replicator学习总结
之前基于Tungsten Replicator实现了内部使用的分布式数据库的数据迁移工具,此文为当时调研Tungsten Replicator时的学习心得,创建于2015.7.22. 1 概述 1.1 ...
- 在VS中配置并测试opencv
什么是opencv? opencv是一个计算机视觉库.它目前有两个分支2.4.X和3.X,2.4.X版本是经典版本,网上的教程资源大多是关于它的,所以推荐使用2.4.X. 它能帮我做什么? 这意味着你 ...
- JMeter在Linux系统中的环境变量配置
下载: 在线下载jmeter(或者本地上传): wget http://mirrors.tuna.tsinghua.edu.cn/apache//jmeter/binaries/apache-jmet ...