java JDBC链接sqlserver/mysql/oracle
今天初学数据库的一些简单创建数据库和表,并进行简单的查询,插入。
接下学习的就是java工程中怎么链接数据库呢。主要的方法和用到的类如下。
切记,mysql需要的jar包 mysql-connector-java-5.1.7-bin.jar
sqlserver需要的jar包 sqljdbc4.jar
oracle需要的jar包 ojdbc6.jar
注意:下面用到的类不是jar中的,而是java.sql中的类。
以下是三个常用数据库的连接实现
一、sqlserver
package com.direct.database; import java.sql.Connection;
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; public class TestPreparedStatement {
public static List< Student> list = new ArrayList<Student>();//存学生对象的集合
public int a;
public void flag(){
a = 10;
System.out.println(a);
//驱动类
String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
//url地址
String url = "jdbc:sqlserver://localhost:1433;databaseName=test";
String userName = "sa";
String password = "123456";
Connection conn = null;//用于应用程序和数据的连接
Statement stmt = null;//已经创建连接的基础上,向数据库发送SQL语句
ResultSet rs = null;//暂时存放数据库查询操作所获得的结果 try {
//加载驱动类
Class.forName(driver);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
//得到一个连接
conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=test", "sa","123456");//得到一个连接
stmt = conn.createStatement();
rs = stmt.executeQuery("select * from Info");//执行SQL语句,并存在ResultSet对象中
while (rs.next()) {
//存对象到集合
Student student = new Student(rs.getString("id"), rs.getString("name"), rs.getString("sex"));
TestPreparedStatement.list.add(student); System.out.print(rs.getString("id")); //读取数据
System.out.print(rs.getString("name"));
System.out.print(rs.getString("sex"));
System.out.println();
} // 创建PreparedStatement对象
//PreparedStatement pstmt = conn.prepareStatement("insert into Info values(?, ? ,?)");//添加
//删除
PreparedStatement pstmt1 = conn.prepareStatement("delete from Info where id = ? and name = ?");
//使用set方法设置参数
PreparedStatement pstmt2 = conn.prepareStatement("update Info set name=? where name ='star' ");
pstmt1.setInt(1, 4);
pstmt1.setString(2, "the");//根据id和name删除数据库的内容 /*pstmt.setInt(1, 1);
pstmt.setString(2, "star");
pstmt.setString(3, "nan");//添加数值对到数据库
*/
pstmt2.setString(1, "super");//更新数据
pstmt2.executeUpdate();
//pstmt.executeUpdate();
pstmt1.executeUpdate();//执行PreparedStatement语句
} catch (SQLException e) {
e.printStackTrace();
}finally{
//关闭连接
try {
rs.close();
stmt.close();
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
System.out.println("----------------");
for (int i = 0; i < TestPreparedStatement.list.size(); i++) {
System.out.println(TestPreparedStatement.list.get(i));
}
} public static void main(String[] args) {
new TestPreparedStatement().flag(); }
}
二、mysql方式一
package com.dkt.mysql.util; import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; public class MysqlConnection {
public static void main(String[] args) {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
Connection conn=null;
PreparedStatement prep = null;
Statement state = null;
ResultSet rs = null;
try {
String url = "jdbc:mysql://localhost:3306/mytest";
conn = DriverManager.getConnection(url, "root", "123456");
state = conn.createStatement();
prep = conn.prepareStatement("select * from useinfo");
rs = prep.executeQuery();
while (rs.next()) {
int id= rs.getInt("userId");
String name= rs.getString("userName");
String sex = rs.getString("userSex");
System.out.println("从mysql读取的数据:"+id+"---------"+name+"--------"+sex);
} } catch (SQLException e) {
e.printStackTrace();
}finally{ try {
if(rs==null) rs.close();
if(prep==null) prep.close();
if(state==null) state.close();
if(conn==null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
} } }
}
二、mysql方式二
使用jdbc.properties配置文件方式
className=com.mysql.jdbc.Driver
url=jdbc\:mysql\://localhost\:3306/mytest
userName=root
password=123456
package com.dkt.mysql.util; import java.io.InputStream;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties; /*
* 反射链接: 什么是反射?
* 我们在程序运行时得到一个字符串,这个字符串是某个类名称,
* 如果要实例化这个类,就需要用到反射。
* 在工程下的src中创建file文件,命名为 jdbc.properties(配置文件)
* 里面存放是键值对的形式。
* 在java 程序中以文件输入流的形式加载进来
*
* 加载驱动 Class.forName();
* oracle: oracle.jdbc.driver.OracleDriver
* mysql: com.mysql.jdbc.Driver
*
* 链接数据库 DriverManager.getConnection(url,user,password);
* mysql:url如下
* jdbc:mysql://localhost:3306/databaseName?userUnicode=true&characterEncoding=utf-8
* "jdbc:mysql://localhost:3306/mytest"
*/
public class Uconn {
public static void main(String[] args) {
new Uconn().conn();
} public void conn(){ Connection conn=null;
PreparedStatement ps = null;
ResultSet rs = null;
//从配置文件中获得加载驱动信息
InputStream in = getClass().getClassLoader().getResourceAsStream("jdbc.properties");
Properties proper = new Properties();
try {
proper.load(in);
String className = proper.getProperty("className");
String url = proper.getProperty("url");
String userName= proper.getProperty("userName");
String password = proper.getProperty("password"); Driver driver = (Driver) Class.forName(className).newInstance();
System.out.println(driver); String sql = " select * from useInfo where userName='娜娜' ";//sql语句,查询useInfo表的数据
conn = DriverManager.getConnection(url, userName, password);
ps = conn.prepareStatement(sql);// 进行sql语句的预编译,防止sql注入
rs = ps.executeQuery();
System.out.println(rs.next());
while (rs.next()) {
int id= rs.getInt("userId");
String name= rs.getString("userName");
String sex = rs.getString("userSex");
System.out.println("从mysql读取的数据:"+id+"---------"+name+"--------"+sex);
} } catch (Exception e) {
e.printStackTrace();
} finally{
try {
if(rs==null) rs.close();
if(ps==null) ps.close();
if(conn==null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
三、oracle
package com.dkt.util; import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet; public class JdbcOracle {
public static void main(String[] args) {
JdbcOracle oracle = new JdbcOracle();
oracle.testOracle();
} /**
* 一个非常标准的连接Oracle数据库的示例代码
*/
public void testOracle(){
Connection con = null;// 创建一个数据库连接
PreparedStatement pre = null;// 创建预编译语句对象,一般都是用这个而不用Statement
ResultSet result = null;// 创建一个结果集对象
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");// 加载Oracle驱动程序
System.out.println("开始尝试连接数据库!");
String url = "jdbc:oracle:thin:@localhost:1521:orcl";// 127.0.0.1是本机地址,XE是精简版Oracle的默认数据库名
String user = "scott";// 用户名,系统默认的账户名
String password = "tiger";// 你安装时选设置的密码
con = DriverManager.getConnection(url, user, password);// 获取连接
System.out.println("连接成功!");
String sql = "select * from scott.emp where ename=?";// 预编译语句,“?”代表参数
pre = con.prepareStatement(sql);// 实例化预编译语句
pre.setString(1, "KING");// 设置参数,前面的1表示参数的索引,而不是表中列名的索引
result = pre.executeQuery();// 执行查询,注意括号中不需要再加参数
while (result.next()){
// 当结果集不为空时
System.out.println("编号:" + result.getInt("empno") + ",姓名:"
+ result.getString("ename")+",工资:"+result.getInt("sal"));
}
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
try
{
// 逐一将上面的几个对象关闭,因为不关闭的话会影响性能、并且占用资源
// 注意关闭的顺序,最后使用的最先关闭
if (result != null)
result.close();
if (pre != null)
pre.close();
if (con != null)
con.close();
System.out.println("数据库连接已关闭!");
}
catch (Exception e)
{
e.printStackTrace();
}
}
} }
java JDBC链接sqlserver/mysql/oracle的更多相关文章
- jdbc连接sqlserver,mysql,oracle
class xxx{ private static String port = "1433"; private static String ip = "192.168.2 ...
- Java JDBC链接Oracle数据库
package com.test.test; import java.io.FileInputStream;import java.io.FileNotFoundException;import ja ...
- Java与SQL Server, MySql, Oracle, Access的连接方法以及一些异常解决
Java与SQL Server, MySql, Oracle, Access的连接方法以及一些异常解决 I. 概述 1.1 JDBC概念 JDBC(Java Database Connectivity ...
- C#操作SqlServer MySql Oracle通用帮助类Db_Helper_DG(默认支持数据库读写分离、查询结果实体映射ORM)
[前言] 作为一款成熟的面向对象高级编程语言,C#在ADO.Net的支持上已然是做的很成熟,我们可以方便地调用ADO.Net操作各类关系型数据库,在使用了多年的Sql_Helper_DG后,由于项目需 ...
- C#操作SqlServer MySql Oracle通用帮助类
C#操作SqlServer MySql Oracle通用帮助类 [前言] 作为一款成熟的面向对象高级编程语言,C#在ADO.Net的支持上已然是做的很成熟,我们可以方便地调用ADO.Net操作各类关系 ...
- 关于在Java中链接SQLServer数据库中失败的原因分析
首先声明:笔者是Java的初学者,并且一值是走在自学的道路上,长久以来只有“度娘”相伴.(加入了各种Java学习群,基本没有热心帮人解决问题的.可以理解-_-!!!)大神级的人物就不必看拙文了,没有什 ...
- Java jdbc链接 mySQL 写的crud
1.JDBC(Java Data Base Connectivity java数据库连接)概念: 是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编 ...
- Java jdbc访问sqlserver,oracle数据库
1.JDBC访问Oracle数据库 public class Jdbc_Oracle { // 静态代码块,只会执行一次,类似C#静态构造方法 static { try { // 加载数据库驱动一次 ...
- Java jdbc访问sqlserver,oracle数据库 DEMO
1.JDBC访问Oracle数据库 public class Jdbc_Oracle { // 静态代码块,只会执行一次,类似C#静态构造方法 static { try { // 加载数据库驱动一次 ...
随机推荐
- pandas如何统计所有列的空值,并转化为list?
统计所有列的空值:data.isnull().sum() 转化成list: df.isnull().sum().index.tolist() df.isnull().sum().values.toli ...
- Intellig IDEA 搭建spring boot 热部署
在pom中直接引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactI ...
- python爬虫学习心得
作为一名python的忠实爱好者,我开始接触爬虫是在2017年4月份,最开始接触它的时候遇到两个梗,一个是对python还不算太了解(当然现在也仍然在努力学习它的有关内容),二是对爬虫心怀一份敬畏之心 ...
- 【随记】SQL备份一张表的数据
SQL Server: SELECT * INTO table_bak FROM table Oracle.MySQL.SQLite: CREATE TABLE table_bak AS ...
- 循环神经网络RNN原理
一.循环神经网络简介 循环神经网络,英文全称:Recurrent Neural Network,或简单记为RNN.需要注意的是,递归神经网络(Recursive Neural Network)的简写也 ...
- Flume启动运行时报错org.apache.flume.ChannelFullException: Space for commit to queue couldn't be acquired. Sinks are likely not keeping up with sources, or the buffer size is too tight解决办法(图文详解)
前期博客 Flume自定义拦截器(Interceptors)或自带拦截器时的一些经验技巧总结(图文详解) 问题详情 启动agent服务 [hadoop@master flume-1.7.0]$ ...
- Q394 字符串解码
给定一个经过编码的字符串,返回它解码后的字符串. 编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次.注意 k 保证为正整数. 你可 ...
- Vue-cil结合Element-ui开发(一)
前几天用了一下Vue.js结合Element-ui,踩了很多坑,现在总结一下以备以后复习-------------------------------------------------------- ...
- day1-Python擅长的领域+学习内容
Python擅长的领域 WEB开发 Django Pyramid Tornado Bottle Flask WebPy 网络编程 Twisted Re ...
- linux下非root用户获得/dev/ttyUSB0的读写权限
首先查看/dev/ttyUSB0的权限属性,在终端输入: ll /dev/ttyUSB0 teashaw@xiaopeiqing.com:~$ ll /dev/ttyUSB0 crw-rw—- 1 r ...