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

本文共 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

你可能感兴趣的文章
Ant编译打包以及批量打包
查看>>
CCF NOI1061 Wifi密码
查看>>
Linux基础系统权限
查看>>
容器技术
查看>>
IE浏览器兼容的处理方式之一,使用特殊的注释 <!--[if IE]> ....<![endif]-->
查看>>
json对象和字符串的相互转换
查看>>
Cobbler学习之一--Fedora17下配置Cobbler安装环境
查看>>
ps教程连接
查看>>
知方可补不足~Sqlserver中的几把锁和.net中的事务级别
查看>>
我心中的核心组件(可插拔的AOP)~第四回 异常拦截器
查看>>
MVVM架构~knockoutjs系列之扩展ajax验证~验证数据是否存在
查看>>
Ubuntu下Android开发环境
查看>>
Python 实习遇见的各种面试题
查看>>
施耐德Sepam 40系列备自投逻辑
查看>>
gulp打包(压缩css,js,加md5码,图片压缩)
查看>>
button的默认类型
查看>>
tomcat server 报错之 More than the maximum allowed number of cookies
查看>>
KendoUI>Framework>Datasource>Overview
查看>>
linux 命令拾遗
查看>>
Hibernate 分组查询 子查询 原生SQL
查看>>