第一步:在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)的更多相关文章

  1. myeclipse连接数据库oracle

    package xsl; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStat ...

  2. Myeclipse连接数据库删除数据库(JDBC)

    package com.test.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Pr ...

  3. oracle的jdbc.properties文件配置

    ----------Oracle #do Oracle JDBC jdbc.driverClassName=oracle.jdbc.driver.OracleDriverjdbc.url=jdbc:o ...

  4. MyEclipse 连接Oracle数据库(初学者必看)

    前言:刚接触Oracle数据库,便有一个需求,编写控制台程序,实现主人登录.数据库为Oracle.下面详细介绍一下MyEclipse 连接Oracle数据库.   package DbHelp; im ...

  5. JDBC课程1-实现Driver接口连接mysql数据库、通用的数据库连接方法(使用文件jdbc.properties)

    package day_18; import jdk.internal.util.xml.impl.Input; import org.junit.Test; import java.io.Input ...

  6. maven项目无法导入Oracle的jdbc连接jar包【我】

    导入一个maven项目,启动一直报错 找不到Oracle的jdbc连接驱动Class, 用Eclipse导入 ojdbc14.jar 连接包,各种方法都无效,无法引入到部署后的lib目录中,可以直接放 ...

  7. 转:ORACLE的JDBC连接方式:OCI和THIN

    oracle的jdbc连接方式:oci和thin oci和thin是Oracle提供的两套Java访问Oracle数据库方式. thin是一种瘦客户端的连接方式,即采用这种连接方式不需要安装oracl ...

  8. 利用MyEclipse连接数据库并自动生成基于注解或者XML的实体类

    一.利用MyEclipse连接数据库 1. 打开MyEclipse的数据库连接视图 然后在Other中找到"MyEclipse Database"中的DB Browser 2. 在 ...

  9. Java添加JDBC

    添加JDBC 1.SQL Server SQL Server2005 下载 sqljdbc_4.0 https://www.microsoft.com/en-us/download/details.a ...

随机推荐

  1. Excel 开发概述

    浅谈Excel开发:一 Excel 开发概述 做Office相关的开发工作快一年多了,在这一年多里,在插件的开发中遇到了各种各样的问题和困难,还好同事们都很厉害,在和他们的交流讨论中学到了很多的知识. ...

  2. WCF服务属性注入基础设施

    WCF服务属性注入基础设施 WCF的服务的创建行为:使用默认构造函数创建WCF服务对象.如果我们想要在WCF内使用外部对象,最简单的方式就是把外部对象做成全局对象.然而这样的话会增加全局对象的数量,让 ...

  3. 批处理清理VS工程目录(递归删除Debug, Release, ipch目录及*.sdf文件)

    用VS写程序最烦的就是VS会产生一大堆乱七八糟的东西,如Degub, Release, ipch目录,还有sdf文件,这些东西占了很大的空间,在linux下编程的话一个make clean就可以很方便 ...

  4. 用curl自动登录HTTPS站点

    前文http://blog.csdn.net/sheismylife/article/details/9237925 演示了如何手动的通过运行curl命令登录HTTPS站点,然后获取cookie, 再 ...

  5. Android便携式热点的开启状态检测和SSID的获取

    WIFI热点的开启状态和开启后的SSID如何获取呢? 打开WifiManager.java源码,可找到 getWifiApState() 方法,惊喜的发现直接调用这个方法就能获取到热点的状态,然而在调 ...

  6. POJ 半平面交 模板题 三枚

    给出三个半平面交的裸题. 不会的上百度上谷(gu)歌(gou)一下. 毕竟学长的语文是体育老师教的.(卡格玩笑,别当真.) 这种东西明白就好,代码可以当模板. //poj1474 Video Surv ...

  7. VUGEN错误处理函数--lr-continue-on-error

    void lr-continue-on-error(int value);value是脚本运行出错时的取值,具体取值与相应值得含义如下表,在具体使用时,可以取常量名或者常量值代表. 1.设置,选择co ...

  8. javascript根据元素自定义属性获取元素,操作元素

    写在前面:给某个或多个元素自定义属性data-tar,想获取data-tar='123'的元素来进行进一步的操作,如何实现? function getElementByAttr(tag,attr,va ...

  9. HDU 2045 不容易系列之(3)—— LELE的RPG难题(递归/动态规划)

    不容易系列之(3)—— LELE的RPG难题 Problem Description 人称“AC女之杀手”的超级偶像LELE最近忽然玩起了深沉,这可急坏了众多“Cole”(LELE的粉丝,即" ...

  10. C# asp.net PhoneGap html5

    很久没写博客,今天自己写一篇吧.来谈一谈c# PhoneGap,html5 与asp.net.能搜到这篇博客就说明你是一位.net开发者,即将或者正在从事移动开发. 大家可能都有疑,我是一名.net开 ...