JDBC

Posted yahari

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JDBC相关的知识,希望对你有一定的参考价值。

 

【Wed Apr 26 2017 16:05:11 GMT+0800】
PLSQL Developer连接远程oracle配置(本地不安装客户端)、
在windows机器上不想安装oracle或者oracle的客户端,我们怎么使用PLSQL Developer工具呢?答案如下:
1:在oracle官网上下载instantclient-basic-nt-11.2.0.3.0.zip该文件,
下载完成后解压该文件。如:我将其解压在E:\\oracleClient\\instantclient_11_2该路径下。进入到instantclient_11_2下创建目录NETWORK,然后再NETWORK下建立目录ADMIN。在ADMIN目录下建立tnsnames.ora文件,在该tnsnames.ora文件中添加如下内容:

 1 # tnsnames.ora Network Configuration File: E:\\app\\Administrator\\product\\11.2.0\\dbhome_1\\network\\admin\\tnsnames.ora
 2 # Generated by Oracle configuration tools.
 3 
 4 LISTENER_ORCL =
 5   (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
 6 
 7 ORACLR_CONNECTION_DATA =
 8   (DESCRIPTION =
 9     (ADDRESS_LIST =
10       (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
11     )
12     (CONNECT_DATA =
13       (SID = CLRExtProc)
14       (PRESENTATION = RO)
15     )
16   )
17 
18 ORCL =
19   (DESCRIPTION =
20     (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.222)(PORT = 1521))
21     (CONNECT_DATA =
22       (SERVER = DEDICATED)
23       (SERVICE_NAME = orcl)
24     )
25   )
tnsnames.ora

192.168.1.222:为数据库所在机器IP。
2:环境变量的配置
打开环境变量设置添加TNS_ADMIN,值为tnsnames.ora所在路径。如本机为E:\\oracleClient\\instantclient_11_2\\NETWORK\\ADMIN\\tnsnames.ora
设置ORACLE的语言,添加环境变量NLS_LANG,值为AMERICAN_AMERICA.AL32UTF8 如果出现乱码可用SIMPLIFIED CHINESE_CHINA.ZHS16GBK
3:下载并安装PLSQL Developer
安装完成后进入PLSQL Developer,选择tools->preferences->connection
Oracle Home:E:\\oracleClient\\instantclient_11_2 
OCI library:E:\\oracleClient\\instantclient_11_2\\oci.dll
修改完毕后保存并重启PLSQL Developer就可以使用该工具了。

 

【Mon Aug 29 2016 13:34:21 GMT+0800】

 1 CREATE TABLE `customers` (
 2   `id` int(11) NOT NULL auto_increment,
 3   `name` varchar(30) NOT NULL,
 4   `address` varchar(30) default \'\',
 5   `phone` varchar(30) default \'\',
 6   `email` varchar(30) default \'\',
 7   `birth` date default NULL,
 8   PRIMARY KEY  (`id`),
 9   UNIQUE KEY `name` (`name`)
10 ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
View Code


【2019年1月2日 00:36:46】
PLSQL+Developer+11.06最新中文绿色注册版(免Oracle11g客户端)

编辑D:\\Dev\\Program\\DB\\PLSQL Developer\\instantclient_11_2下的tnsnames.ora,如下:

# tnsnames.ora Network Configuration File:  tnsnames.ora
# Generated by Oracle configuration tools.

orcl =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1 )(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl )
    )
  )

helowin15 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 223.223.185.15 )(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = helowin )
    )
  ) 
tnsnames.ora

即可登录成功。

001-通过Driver接口获取数据库连接

  Driver 是一个接口: 数据库厂商必须提供实现的接口. 能从其中获取数据库连接。
  可以通过 Driver的实现类对象获取数据库连接。
  1. 加入mysql驱动
  ⑴解压"mysql-connector-java-5.1.7.zip"。
  ⑵在当前项目下新建"lib"目录。
  ⑶把"mysql-connector-java-5.1.7-bin.jar"复制到lib目录下。
  ⑷右键"Build Path"→"Add to Build Path"加入到类路径下。

 1 package com.atguigu.jdbc;
 2 
 3 import java.sql.Connection;
 4 import java.sql.Driver;
 5 import java.sql.SQLException;
 6 import java.util.Properties;
 7 
 8 import org.junit.Test;
 9 
10 public class JDBCTest1 {
11   @Test
12   public void testDriver() throws SQLException {
13     //1. 创建一个 Driver实现类的对象
14     Driver driver = new com.mysql.jdbc.Driver();
15     //2. 准备连接数据库的基本信息: url、user、password
16     String url = "jdbc:mysql://localhost:3306/atguigu";
17     Properties info = new Properties();
18     info.put("user", "root");
19     info.put("password", "123456");
20     //3. 调用 Driver 接口的 connect(url, info) 获取数据库连接
21     Connection connection = driver.connect(url, info);
22     System.out.println(connection);
23   }    
24 }
JDBCTest1.java

  第8行,需要加入单元测试:右键“Properties”在窗口中,首先在左边选择“Java Build Path”,然后到右上选择“Libraries”标签,之后在最右边点击“Add Library…”按钮,选择“JUnit4”。
  第16行,数据库的库名:atguigu。

  编写一个通用的方法, 在不修改源程序的情况下, 可以获取任何数据库的连接
  解决方案: 把数据库驱动Driver实现类的全类名、url、user、password 放入一个配置文件(jdbc.properties)中, 通过修改配置文件的方式实现和具体的数据库解耦。

 1 package com.atguigu.jdbc;
 2 
 3 import java.io.InputStream;
 4 import java.sql.Connection;
 5 import java.sql.Driver;
 6 import java.util.Properties;
 7 
 8 import org.junit.Test;
 9 
10 public class JDBCTest2 {
11   public Connection getConnection() throws Exception {
12     String driverClass = null;
13     String jdbcUrl = null;
14     String user = null;
15     String password = null;
16     //读取类路径下的jdbc.properties文件(在src下)
17     InputStream in = getClass().getClassLoader().getResourceAsStream("jdbc.properties");
18     Properties properties = new Properties();
19     properties.load(in);
20     driverClass = properties.getProperty("driver");
21     jdbcUrl = properties.getProperty("jdbcUrl");
22     user = properties.getProperty("user");
23     password = properties.getProperty("password");
24     //通过反射常见Driver对象 
25     Driver driver = (Driver) Class.forName(driverClass).newInstance();
26     Properties info = new Properties();
27     info.put("user", user);
28     info.put("password", password);
29     //通过Driver的connect方法获取数据库连接.
30     Connection connection = driver.connect(jdbcUrl, info);
31     return connection;
32   }
33   @Test
34   public void testGetConnection() throws Exception{
35     System.out.println(getConnection());
36   }
37 }
JDBCTest2.java

  DriverManager是驱动的管理类
  ⑴可以通过重载的 getConnection()方法获取数据库连接. 较为方便。
  ⑵可以同时管理多个驱动程序: 若注册了多个数据库连接, 则调用 getConnection()方法时传入的参数不同, 即:返回不同的数据库连接。

 1 package com.atguigu.jdbc;
 2 
 3 import java.sql.Connection;
 4 import java.sql.DriverManager;
 5 
 6 import org.junit.Test;
 7 
 8 public class JDBCTest3 {
 9   @Test
10   public void testDriverManager() throws Exception {
11     //1. 准备连接数据库的4个字符串. 
12     String driverClass = "com.mysql.jdbc.Driver"; //驱动的全类名 
13     String jdbcUrl = "jdbc:mysql:///atguigu"; //JDBC URL   
14     String user = "root"; //user 
15     String password = "123456"; //password
16 
17     //2. 加载数据库驱动程序(对应的 Driver 实现类中有注册驱动的静态代码块.)
18     Class.forName(driverClass);
19 
20     //3. 通过 DriverManager 的 getConnection() 方法获取数据库连接. 
21     Connection connection =  DriverManager.getConnection(jdbcUrl, user, password);
22     System.out.println(connection); 
23   }
24 }
JDBCTest3.java

 

 1 package com.atguigu.jdbc;
 2 
 3 import java.io.InputStream;
 4 import java.sql.Connection;
 5 import java.sql.DriverManager;
 6 import java.util.Properties;
 7 
 8 import org.junit.Test;
 9 
10 public class JDBCTest4 {
11   public Connection getConnection2() throws Exception{
12     //1. 准备连接数据库的4个字符串. 
13     //⑴创建Properties对象
14     Properties properties = new Properties();
15     //⑵ 获取jdbc.properties对应的输入流
16     InputStream in = this.getClass().getClassLoader().getResourceAsStream("jdbc.properties");
17     //⑶加载⑵对应的输入流
18     properties.load(in);
19     //⑷具体决定user、password 等4个字符串. 
20     String user = properties.getProperty("user");
21     String password = properties.getProperty("password");
22     String jdbcUrl = properties.getProperty("jdbcUrl");
23     String driver = properties.getProperty("driver");
24     //2. 加载数据库驱动程序(对应的Driver实现类中有注册驱动的静态代码块)
25     Class.forName(driver);
26     //3. 通过DriverManager的getConnection()方法获取数据库连接. 
27     return DriverManager.getConnection(jdbcUrl, user, password);
28   }
29   @Test
30   public void testGetConnection2() throws Exception{
31     System.out.println(getConnection2()); 
32   }
33 }
JDBCTest4.java

  通过JDB 向指定的数据表中插入一条记录.
  1. Statement: 用于执行SQ 语句的对象
  ⑴通过Connectio的createStatement()方法来获取。
  ⑵通过executeUpdate(sql)可以执行SQL语句。
  ⑶传入的SQL可以是INSRET、UPDATE或DELETE。但不能是SELECT。
  2. Connection、Statement都是应用程序和数据库服务器的连接资源. 使用后一定要关闭。需要在finally中关闭Connection和Statement对象。
  3. 关闭的顺序是: 先关闭后获取的, 即:先关闭Statement后关闭Connection。

 1 package com.atguigu.jdbc;
 2 
 3 import java.io.InputStream;
 4 import java.sql.Connection;
 5 import java.sql.DriverManager;
 6 import java.sql.Statement;
 7 import java.util.Properties;
 8 import org.junit.Test;
 9 
10 public class JDBCTest5 {
11   @Test
12   public void testStatement() throws Exception{
13     //1. 获取数据库连接
14     Connection conn = null;
15     Statement statement = null;
16     try {
17       conn = getConnection2();
18       //3. 准备插入的SQL语句
19       String sql = null;
20       sql = "INSERT INTO customers (name, email, birth) VALUES(\'Jerry\', \'jerry@atguigu.com\', \'1991-2-12\')";
21       // sql = "DELETE FROM customers WHERE id = 1";
22       // sql = "UPDATE customers SET name = \'TOM\' WHERE id = 4";
23       System.out.println(sql);
24       //4. 执行插入
25       //⑴获取操作SQL语句的Statement对象: 
26       statement = conn.createStatement();//调用Connection的createStatement()方法来获取
27       //⑵调用Statement对象的executeUpdate(sql)执行SQL语句进行插入
28       statement.executeUpdate(sql);
29     } catch (Exception e) {
30       e.printStackTrace();
31     } finally{
32       try {
33         //5. 关闭Statement对象
34         if(statement != null)
35         statement.close();
36       } catch (Exception e) {
37         // TODO Auto-generated catch block
38       e.printStackTrace();
39       } finally {
40         //2. 关闭连接
41         if(conn != null)
42         conn.close();                            
43       }
44     }
45   }
46 
47   public Connection getConnection2() throws Exception {
48     //1. 准备连接数据库的4个字符串. 
49     //⑴创建Properties对象
50     Properties properties = new Properties();    
51     //⑵获取jdbc.properties对应的输入流
52     InputStream in = this.getClass().getClassLoader().getResourceAsStream("jdbc.properties");        
53     //⑶加载⑵对应的输入流
54     properties.load(in);        
55     //⑷具体决定 user、password等4个字符串. 
56     String user = properties.getProperty("user");
57     String password = properties.getProperty("password");
58     String jdbcUrl = properties.getProperty("jdbcUrl");
59     String driver = properties.getProperty("driver");        
60     //2. 加载数据库驱动程序(对应的Driver实现类中有注册驱动的静态代码块)
61     Class.forName(driver);        
62     //3. 通过DriverManager的getConnection() 方法获取数据库连接.
63     return DriverManager.getConnection(jdbcUrl, user, password);
64   }
65 
66   @Test
67   public void testGetConnection2() throws Exception{
68     System.out.println(getConnection2()); 
69   }
70 }
JDBCTest5.java

   版本1:通用的更新的方法(包括 INSERT、UPDATE、DELETE)版本1

******************************
ORACLE
******************************
【Tue Oct 11 2016 09:37:50 GMT+0800】
使用Oracle的plsqldev.exe之前需要启动这两个服务:OracleServiceORCL和OracleOraDb10g_home1TNSListener,在Widows命令行
net start oracleserviceorclnet start OracleOraDb10g_home1TNSListener(lsnrctl start)

C:\\Users\\admin>net start oracleserviceorcl
OracleServiceORCL 服务正在启动 ......
OracleServiceORCL 服务已经启动成功。

C:\\Users\\admin>net start OracleOraDb10g_home1TNSListener
OracleOraDb10g_home1TNSListener 服务正在启动 .
OracleOraDb10g_home1TNSListener 服务已经启动成功。

 

【Sat Jun 10 2017 10:23:12 GMT+0800】
net start OracleServiceORCL 和 net start OracleOraDb11g_home1TNSListener
(Oracle数据库-服务-ORCL库名 和 Oracle-Ora文件-Db11g_home1TNSListener监听)

 

【Thu Nov 17 2016 09:19:10 GMT+0800】
在win7下安装Apahce2.2和MySQL服务
如果直接“win+R”→“cmd”

1 C:\\Users\\John>d:
2 D:\\>cd D:\\AppServ\\Apache2.2\\bin
3 D:\\AppServ\\Apache2.2\\bin>httpd -k install
4 Installing the Apache2.2 service
5 (OS 5)拒绝访问。  : Failed to open the WinNT service manager

出现第4、5行信息,主要是需要管理员权限才行。需要在打开cmd的时候用管理员身份打开,然后执行以上命令即可;也可以写一个bat文件以管理员身份也可以。
到“C:\\Windows\\SysWOW64”下打开“cmd”

 1 C:\\Windows\\system32>d:
 2 D:\\>cd D:\\AppServ\\Apache2.2\\bin
 3 D:\\AppServ\\Apache2.2\\bin>httpd -k install
 4 Installing the Apache2.2 service
 5 The Apache2.2 service is successfully installed.
 6 Testing httpd.conf....
 7 Errors reported here must be corrected before the service can be started.
 8 
 9 D:\\AppServ\\Apache2.2\\bin>net start Apache2.2
10 Apache2.2 服务正在启动 .
11 Apache2.2 服务已经启动成功。
12 
13 D:\\AppServ\\Apache2.2\\bin>cd D:\\AppServ\\MySQL\\bin
14 
15 D:\\AppServ\\MySQL\\bin>mysqld-nt --install
16 Service successfully installed.
17 
18 D:\\AppServ\\MySQL\\bin>mysql
19 ERROR 2003 (HY000): Can\'t connect to MySQL server on \'localhost\' (10061)
20 
21 D:\\AppServ\\MySQL\\bin>net start mysql
22 MySQL 服务正在启动 .
23 MySQL 服务已经启动成功。
24 
25 D:\\AppServ\\MySQL\\bin>mysql
26 Welcome to the MySQL monitor.  Commands end with ; or \\g.
27 Your MySQL connection id is 1
28 Server version: 5.0.51b-community-nt-log MySQL Community Edition (GPL)
29 
30 Type \'help;\' or \'\\h\' for help. Type \'\\c\' to clear the buffer.
31 
32 mysql>
win7下安装Apahce和MySQL

 

【Sat Oct 22 2016 21:56:08 GMT+0800】

  1 -- phpMyAdmin SQL Dump
  2 -- version 3.5.3
  3 -- http://www.phpmyadmin.net
  4 --
  5 -- 主机: localhost
  6 -- 生成日期: 2016 年 10 月 22 日 21:19
  7 -- 服务器版本: 5.5.20
  8 -- PHP 版本: 5.3.5
  9 
 10 SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
 11 SET time_zone = "+00:00";
 12 
 13 
 14 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
 15 /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
 16 /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
 17 /*!40101 SET NAMES utf8 */;
 18 
 19 --
 20 -- 数据库: `ecshop`
 21 --
 22 
 23 -- --------------------------------------------------------
 24 
 25 --
 26 -- 表的结构 `goods`
 27 面试常用的代码片段

mysql jdbc源码分析片段 和 Tomcat's JDBC Pool

JDBC操作数据库之查询数据

如何在片段中填充列表视图?

在 myeclipse中进行连接sql server的测试

MYBATIS05_ifwherechoosewhentrimsetforEach标签sql片段