博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java_JDBC_Oracle
阅读量:6123 次
发布时间:2019-06-21

本文共 3341 字,大约阅读时间需要 11 分钟。

1、

韩顺平 servlet 课程中,讲到 jdbc操作,应该是 第25/26讲 讲到的。

ZC:听这25讲里面的意思([21:03]又是老一套),应该在 之前哪个视频里面也讲过的,不记得了... 貌似是 java基础?还是jsp?

ZC:貌似 是 韩 专门的 jdbc课程里面有讲。

 

2、

DriverManager.getConnection("jdbc:oracle:thin:@IP:PORT:数据库名称", "scott", "tiger");

ZC:上面的“数据库名称”应该就是对应的“Oracle SQL Developer”(现在用的版本为:版本 2.1.1.64)中 数据库连接的属性的 SID属性。也应该就是 Oracle服务器端 Windows服务“OracleServiceXYZ”中的“XYZ”。

 

Connect ct = null;

ResultSet rs = null;

PerparedStatement ps = null;

try

{

// (1)、加载驱动

Class.forName("oracle.jdbc.driver.OracleDriver");

// (2)、得到连接(IP:PORT:数据库名称)

ct = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORCLHSP", "scott", "tiger");

// (3)、创建PerparedStatement (通常用这个[安全性--SQL注入],那么 不通常用的 不安全的方式是啥?在哪里讲解/比较过? jdbc第3讲[53:39]用PerparedStatement取代Statement[createStatement])

ps  = ct.perpareStatement("select * from users where id=? and passwd=?");

// (3.1)、给 问号 赋值

ps.setObject(1, id);

ps.setObject(2, passwd);

// (4)、执行操作

rs = ps.executeQuery();

// (5)、根据结果做处理

if (rs.next())

{

// 说明该用户 合法

}

else

{

// 说明该用户 不合法

}

}

catch (Exception ex)

{

ex.printStackTrace();

}

finally

{

// 关闭资源

if (rs != null)

{

  try {

  rs.close();

  }

  catch (SQLException ex) {

    ex.printStackTrace();

  }

  rs = null;

}

if (ps != null)

{

  try {

  ps.close();

  }

  catch (SQLException ex) {

    ex.printStackTrace();

  }

  ps = null;

}

if (ct != null)

{

  try {

  ct.close();

  }

  catch (SQLException ex) {

    ex.printStackTrace();

  }

  ct = null;

}

}

 

3、

package zz;import java.sql.*;public class TjdbcOper{        static Class
Fclazz = null; static Connection Fconn = null; public static Connection ConnectionOpen(String _strDriver, String _strUrl, String _strUserName, String _strPassword) throws Exception { // 加载驱动 // _strDriver ==> "oracle.jdbc.driver.OracleDriver" if (Fclazz == null) Fclazz = Class.forName(_strDriver); if (Fclazz == null) return null; // _strUrl ==> "jdbc:oracle:thin:@localhost:1521:ORCLHSP" // _strUserName ==> "scott" // _strPassword ==> "tiger" if (Fconn == null) Fconn = DriverManager.getConnection(_strUrl, _strUserName, _strPassword); return Fconn; } public static int Insert(Connection _conn, String _strInsert, String[] _strsParameter) throws Exception { PreparedStatement ps = _conn.prepareStatement(_strInsert); for (int i=0; i<_strsParameter.length; i++) ps.setString(i + 1, _strsParameter[i]); int iRtn = ps.executeUpdate(); // 韩 jdbc 第3讲[01:11:00] 有如下观点: // 如果是 update语句的话,返回的数量不确定(ZC: 可能需要更新 100条记录,但是更新到第30条时就出错了,此时返回的数字也是大于0的,是这样吗?) // 于是需要用是否抛出异常来确定update是否更新成功 [ZC: update语句抛出异常时,PreparedStatement.executeUpdate()会返回大于0的数吗?] if (ps != null) { try { ps.close(); } catch (SQLException e) { e.printStackTrace(); } // 如果上面关闭没有成功的话,这样操作使得 没有变量指向 PreparedStatement实例,这样给垃圾回收机制去处理回收。 // 但是这里的 ps是局部变量,函数退出后,栈空间回收,也没有变量再指向 PreparedStatement实例 了,应该不用显示的赋值为null了。 // 但是,记得在哪里见过函数退出后 还能保持局部变量的,是在 C#里还是在java里? ps = null; } return iRtn; } public static void Close() {} public static void main(String[] args) { }}

 

 

X

 

转载于:https://www.cnblogs.com/codeskilla/p/5198094.html

你可能感兴趣的文章
【Python】内置函数
查看>>
TCGA学习1--下载level3 level4数据
查看>>
装修房水电验收标准,水电验收注意事项
查看>>
2014年8月25日,收藏家和杀手——面向对象的C++和C(一)
查看>>
iOS经常使用设计模式——单例模式
查看>>
activity生命周期
查看>>
bootstrap入门
查看>>
OpenStack二三事(1)
查看>>
Java 学习路线建议
查看>>
[自学AndroidStudio系列]第二篇章:高速上手AS小技巧其一
查看>>
Hibernate HQL的使用
查看>>
机器学习十大常用算法小结
查看>>
Jenkins 忘记admin密码拯救方法
查看>>
windows安装go-sqlite3失败,提示找不到gcc
查看>>
linux(十四)之linux NFS服务管理
查看>>
一脸懵逼学习oracle(图形化界面操作---》PLSQL图形化界面)
查看>>
同理心是通往成功架构的桥梁
查看>>
vuex在页面中以对象展开运算符形式引入报错解决
查看>>
spring aop切面编程实现操作日志步骤
查看>>
VS2013生成XP独立运行程序
查看>>