java连数据库和数据库连接池踩坑日记(一)-------oracle连接的一些问题
最近接触oracle有点多,同时也在配置数据库连接池,坑也就踩多了,记录下。
事情还没有结束,没时间记录问题,很多事情都忘了,过了国庆再写的话可能就真的全忘了吧……而且不单单是数据库问题,还有一些数据库连接池等等的问题。
先写有关数据库的吧。
一、Navicat连接远端oracle需要配置合适的驱动
我用Navicat的时候还用的是plsql,连plsql并没有踩什么坑(或者是我自己忘了),所以连接oracle的时候并没有做特殊的配置,然后每次一连接就闪退,我只当是自己填错账号密码没有深究。然后后面查了查教程,需要配置oci。
先确认你想要连接的oracle的版本,再下载版本对应的驱动
然后进入Navicat中,选择工具-选项-环境,然后设置oci环境如下,选择自己下载的驱动下面的oci.dll,然后重启Navicat就可以生效了
同时,如果没有配置好oci环境也会报“navicat is not able to create OCI handles”的错误。
二、java.sql.SQLException: 未调用 ResultSet.next
这种情况,即使你使用java程序查询oracle程序时返回的只有一条数据,也必须使用result.next(),譬如:
if(result.next()){
int count = result.getInt(1);
}
三、查询某个表格是否存在
我需要使用的是java确定远端oracle中是否有我需要的那张表格存在,有就继续后续的查询操作。根据https://blog.csdn.net/lmb55/article/details/54837719所给的方案得到了解决。
主要有两个思考方向,一是s可用的sql语句。我在网上查到了很多说法,知道数据库中是有一张表格保存了数据库中所有表的信息,比如表名、拥有者等信息的,但是他们所给的表在我所连接的数据库中都是空表,可能不同的数据库设置问题导致表格也不同,而且也需要确定你的账号有没有访问这张表格的权限。
我最终找到了结果(注意表名和拥有者作为查询的字符串条件时是区分大小写的,我一开始就因为这个原因屡次出问题):
select * from all_tables WHERE upper(OWNER) LIKE '表的拥有者的大写' AND upper(TABLE_NAME) LIKE '表名的大写';
第二个方法是别人提供的java方法,但是我这里返回结果是不对的,一直是不存在:
ResultSet rs = con.getMetaData().getTables(null, null, tableName, null);
if (rs.next()) {
return true;
}else {
return false;
}
java连数据库和数据库连接池踩坑日记(一)-------oracle连接的一些问题的更多相关文章
- java连数据库和数据库连接池踩坑日记(二)-------数据库连接池c3p0
关于数据库连接池,我觉得有些沮丧,因为最后被毙掉了说不用考虑多线程的问题…… 数据库连接池的推荐:https://www.cnblogs.com/nuccch/p/8120349.html 我最终选择 ...
- JAVA和C#中数据库连接池原理与应用
JAVA和C#中数据库连接池原理 在现在的互联网发展中,高并发成为了主流,而最关键的部分就是对数据库操作和访问,在现在的互联网发展中,ORM框架曾出不穷, 比如:.Net-Core的EFCore.Sq ...
- AI相关 TensorFlow -卷积神经网络 踩坑日记之一
上次写完粗浅的BP算法 介绍 本来应该继续把 卷积神经网络算法写一下的 但是最近一直在踩 TensorFlow的坑.所以就先跳过算法介绍直接来应用场景,原谅我吧. TensorFlow 介绍 TF是g ...
- 人工智能(AI)库TensorFlow 踩坑日记之一
上次写完粗浅的BP算法 介绍 本来应该继续把 卷积神经网络算法写一下的 但是最近一直在踩 TensorFlow的坑.所以就先跳过算法介绍直接来应用场景,原谅我吧. TensorFlow 介绍 TF是g ...
- hexo博客谷歌百度收录踩坑日记
title: hexo博客谷歌百度收录踩坑日记 toc: false date: 2018-04-17 00:09:38 百度收录文件验证 无论怎么把渲染关掉或者render_skip都说我的格式错误 ...
- Hexo搭建静态博客踩坑日记(二)
前言 Hexo搭建静态博客踩坑日记(一), 我们说到利用Hexo快速搭建静态博客. 这节我们就来说一下主题的问题与主题的基本修改操作. 起步 chrome github hexo git node.j ...
- Hexo搭建静态博客踩坑日记(一)
前言 博客折腾一次就好, 找一个适合自己的博客平台, 专注于内容进行提升. 方式一: 自己买服务器, 域名, 写前端, 后端(前后分离最折腾, 不分离还好一点)... 方式二: 利用Hexo, Hug ...
- 【Java进阶】——初识数据库连接池
[简介] 数据库连接池:程序启动时建立足够的数据库连接,并将这些连接组成一个连接池,由程序动态地对池中的链接进行申请,使用,释放. 相比之前的程序连接,减少了数据库的打开关闭次数,从而减少了程序响应的 ...
- java 利用c3p0管理数据库连接池
数据库连接池类,用于获取数据库连接.利用单例模式保证所有的连接都只通过一个连接池管理. package com.mousewheel.dbcon; import java.io.InputStream ...
随机推荐
- C# 中关于重载与重写的区别及用法
1.重载(overload): 在同一个作用域(一般指一个类)的两个或多个方法函数名相同,参数列表不同的方法叫做重载,它们有三个特点(俗称两必须一可以): 方法名必须相同 参数列表必须不相同 返回值类 ...
- 记一次在 Get 请求参数为 Null 值的折腾
先说主要原因,是因为一个 NgZerro 的 Select 组件,需要显示 placeHolder 文字,初始值为 null,然后直接绑定到查询参数中,传输到后端导致 BadRequest,参数解析失 ...
- 【转载】JVM结构、GC工作机制详解
文章主要分为以下四个部分 JVM结构.内存分配.垃圾回收算法.垃圾收集器.下面我们一一来看. 一.JVM结构 根据<java虚拟机规范>规定,JVM的基本结构一般如下图所示: 从左图可知, ...
- 【转载】C#使用Math.Ceiling方法对计算结果向上取整操作
在C#的数值运算中,有时候需要对计算结果进行向上取整操作,支持设定结算结果的有效位数,Math.Ceiling方法是C#中专门用来对数值进行向上取整的方法,此方法和Math.Round方法.Math. ...
- JS中BOM和DOM常用的事件
总结:window对象 ● window.innerHeight - 浏览器窗口的内部高度 ● window.innerWidth - 浏览器窗口的内部宽度 ● window.open() - 打开新 ...
- Android 常用开源库总结(持续更新)
前言 收集了一些比较常见的开源库,特此记录(已收录350+).另外,本文将持续更新,大家有关于Android 优秀的开源库,也可以在下面留言. 一 .基本控件 TextView HTextView 一 ...
- python(函数封装)
一:Python 自定义函数 函数示意图如下: 1.使用函数的好处: 代码重用 保持一致性,易维护 可扩展性 2.函数定义 函数定义的简单规则: 函数代码块以def关键词开头 后接函数标识符名称和圆括 ...
- TCP、UDP、HTTP、HTTPS之间的区别
网络由下往上分为: 物理层--- 数据链路层--- 网络层 -- IP协议 传输层 -- TCP协议 会话层 -- 表示层和应用层 -- HTTP协议 1.TCP/IP连接 TCP传输控制协议,是一种 ...
- C++创建和使用动态链接库
一个简单的动态链接库的生成和调用例子,太过简单,大神请绕道. 一.创建动态链接库 使用vs创建工程选择动态链接库. 在项目中创建源文件和头文件,并在文件中添加以下代码. 在头文件中添加以下代码 // ...
- tomcat7.x配置APR高并发模式
Tomcat支持BIO/NIO/APR三种运行模式 ,性能各色春秋! Apr插件提高Tomcat性能 Tomcat可以使用APR来提供超强的可伸缩性和性能,更好地集成本地服务器技术. APR(Apac ...