public class TestMySqlConnection{
 public static void main(String[] args){
             Class.forName("com.mysql.jdbc.Driver"); //加载驱动
              //数据库:格式:jdbc:mysql(sqlserver):   //数据库服务器地址:端口(3306为mysql端口,sqlserver 2005为1433);数据库名称
             String url = "jdbc:mysql://localhost:3306/db_localTest?useUnicode=true&characterEncoding=gbk;";
             String userName = "root";
             String userPwd = "root";
             Connection con = DriverManager.getConnection(url,userName,userPwd);  //获取connection实例
             String strsql = "Insert into tb_User() values('','','')";  //sql
             Statement stmt = con.CreateStatement();  //获取Statement实例
             stmt.excuteUpdate(strsql);  //执行sql语句
             con.close();
        }
}

Class.forName("驱动路径")      //在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),成功加载后,会将Driver类的实例注册到DriverManager类中。

备注:DriverManager 类中方法都是静态方法,直接调用

1、getConnection(String url,String user,String password)     获取connection实例

备注:关于URL标示[书写形式:协议:子协议:数据源标识]

  1. 协议:在JDBC中总是以jdbc开始
  2. 子协议:是桥连接的驱动程序或是数据库管理系统名称,如mysql或者sqlserver等
  3. 数据源标识:标记找到数据库来源的地址与连接端口

2、setLoginTimeout()      //获取驱动程序试图登陆到某一数据库可以等待的最长时间,秒为单位

3、println(String message)        //将一条消息打印到当前JDBC日志流中

Connection接口:表示与特地数据库连接。要对数据库中对象操作,首先需要获取数据库连接。

       Connection 实例就像是在应用程序与数据库之间开通了一条渠道。

Statement接口:用于创建向数据库中传递SQL语句的对象,该接口提供了一些方法可以实现对数据库的常用操作。

Statement分为3中:

【1】静态执行SQL语句 ,通过Statement实现;

【2】执行动态SQL语句,通常通过PreparedStatement实例实现,一般采用这种,预编译方式;可以防止SQL注入。

【3】执行数据库存储过程,通常通过CallableStatement实例实现。 

PreparedStatement接口:继承与Statement,用于动态的执行SQL语句,通过PreparedStatement执行的SQL语句,将被预编译保存到PreparedStatement实例中,从而可以反复SQL语句。

  执行SQL语句:

Statement接口提供了3种执行SQL语句的方法:executeQuery(), executeUpdate()  ,execute()

  1. 【1】ResultSet executeQuery(String sqlString):执行查询数据库的SQL语句   ,返回一个结果集(ResultSet)对象。
  2. 【2】int executeUpdate(String sqlString):用于执行INSERT、UPDATE或   DELETE语句以及SQL DDL语句,如:CREATE TABLE和DROP TABLE等
  3. 【3】execute(sqlString):用于执行返回多个结果集、多个更新计数或二者组合的语句。

ResultSet接口:

   类似于临时表(TempTable),暂时存储数据库查询操作说获取的结果集。

通过ResultSet获取数据的形式主要是:

while(rs.next())

{

  String Name = rs.getString("name");

  String Pwd = rs.getString();

}

【列的索引是从左往右编号的,并且从1开始】

加载数据库驱动:Class.forName(String driverName)  ;

DriverManager.getConnection()         获取连接对象

返回值:返回与带有给定字符串名的类或者接口相关联的Class对象。

forName() 方法参数指定要加载的数据库驱动,加载成功,会将加载的驱动注册给DriverManager,如果失败,会抛出ClassNotFoundException异常。

关闭JDBC对象

1、操作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源,关闭顺序和声明顺序相反:

  1. 【1】关闭记录集
  2. 【2】关闭声明
  3. 【3】关闭连接对象

1  if(rs != null){   // 关闭记录集statement

 2         try{   
 3             rs.close() ;   
 4         }catch(SQLException e){   
 5             e.printStackTrace() ;   
 6         }   
 7           }   
 8           if(stmt != null){   // 关闭声明   
 9         try{   
             stmt.close() ;   
         }catch(SQLException e){   
             e.printStackTrace() ;   
         }   
           }   
           if(conn != null){  // 关闭连接connection对象   
          try{   
             conn.close() ;   
          }catch(SQLException e){   
             e.printStackTrace() ;   
      }   
  }  

加载Mysql数据库驱动:

 try{
  Class.forName("com.mysql.jdbc.Driver");
}catch(Exception e){
  e.printStackTrace();
}

使用PreparedStatement接口中的excuteUpdate()向Mysql中添加数据

Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/db_database";
String userName = "root";
String userPwd = "root";
Connection mycon = DriverManager.getConnection(url,userName,userPwd);
String sql = "Insert into tb_User(username,userPwd,sex,age) values(?,?,?,?)";
PreparedStatement ps = con.PreparedStatement(sql);
ps.setString(1,"李四"); //给占位符?赋值 从1开始
ps.setString(2,"aaa");
ps.setString(3,"男");
ps.setInt(4,23);
ps.excuteUpdate();
con.close()

获得查询结果集:

 Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/db_database";
String userName = "root";
String userPwd = "root"; Connection con = DriverManager.getConnection(url,userName,userPwd);
Statement stmt = con.CreateStatement();
String sql = "Select * from tb_User";
ResultSet rs = stmt.exuteQuery(sql);
int id,age;
String username,userPwd,sex;
System.out.println("id\t 用户名\t 性别\t 年龄");
while(rs.next()){
id = rs.getInt("id");
username = rs.getString(2);
.
.
.
}

更改数据库中数据:

 public static void main(String[] args){
try{
  Class.forName("com.mysql.jdbc.Driver");
}catch(Exception e){
  e.printStackTrace();
}
String url = "jdbc:mysql://localhost:3306/db_database";
String userName = "root";
String userPwd = "root";
String sql = "update tb_users set age = 20 where id = 1";
Connection con = DriverManager.getConnection(url,userName,userPwd);
Statement stmt = con.CreateStatement();
stmt.executeUpdate(sql);
System.out.println("修改成功!");
con.close();
}

使用PreparedStatement 接口中的excuteUpdate方法修改数据库中tb_User

public static void main(String[] args){
try{
  Class.forName("com.mysql.jdbc.Driver");
}catch(Exception e){
  e.printStackTrace();
}
String url = "jdbc:mysql://localhost:3306/db_database";
String userName = "root";
String userPwd = "root";
String sql = "update tb_User set username=? where sex = ?";
Connection con = DriverManager.getConnection(url,userName,userPwd);
PreparedStatement ps = con.PreparedStatement(sql);
ps.setString(1,"admin");
ps.setString(2,"女");
int count = ps.executeUpdate();
System.out.println("修改成功!");
con.close();
}

模糊查询:

 //模糊查询
public class Test02{
public static void main(String[] args){
  Class.forName("driverName");
  String url = "jdbc:mysql://localhost:3306;DatabaseName=tb_User";
  String username = "root";
  String userPwd = "root";
  Connection con = DriverManager.getConnection(url,username,userPwd);
  Statement stmt = con.CreateStatement();
  String sql = "Select * from tb_User where username like '%李%'";
  ResultSet rs = stmt.excuteQuery(sql);
  int id,age;
 String userName,userPwd;sex;
  System.out.println("编号\t 用户名\t 性别\t 年龄");
while(rs.next())
{
  id = rs.getInt("id");
  userName = rs.getString(2);
  userPwd = rs.getString("password");
  sex = rs.getString(4);
  age = rs.getInt("age");
  System.out.println(id+"\t"+userName+"\t"+sex+"\t"+age);
}
}
}

JDBC调用存储过程(有输入参数IN没有输出参数OUT):

 public class TestProcedure01{
public static void main(STrng[] args){
  System.out.println("------------调用无参数的存储过程------");
  Connection con = null;
  CallableStatement callstmt = null;
try
{
  Class.forName(ProcessProc.DB_Driver);
   con = DriverManager.getConnection(DB_Url,DB_Name,DB_Pwd);
   callstmt = con.prepareCall("{call TEST_MICHAEL_NOOUT(?,?,?,?)}");   callstmt.setString(1,"jdbc");
  callstmt.setString(2,"JDBC");
  callstmt.setDouble(3,8000.00);
  callstmt.setString(4,"http://sjsky.iteye.com");
  callstmt.exceute();
  System.out.println("-----End------");
}
catch(Exception e)
{
  e.printStackTrace(System.out);
}finally{
if (callstmt!=null) {
  callstmt.close();
}
if (con!=null) {
  con.close();
   }
     }
  }
}
static class ProcessProc{
private final static String DB_Driver = "mysql.jdbc.driver";
private final static String DB_Url = "jdbc:mysql://localhost:3306;Db_User";
private final static String DB_Name = "root";
private final static STring DB_Pwd = "root";
} JDBC批处理http://www.cnblogs.com/QQ931697811/p/5044725.html

JDBC初步的更多相关文章

  1. JDBC初步 JDBC连接SQLServer 2008之心路历程

    转自:http://www.cnblogs.com/weilengdeyu/archive/2013/01/17/2864321.html JDBC简介 今天,研究了下JDBC连接SQL Server ...

  2. JDBC初步(一)

    import java.sql.*; public class TestJDBC { // orcl为oracle数据库中的数据库名,localhost表示连接本机的oracle数据库 // 1521 ...

  3. jdbc初步(转)

    1. Jdbc的六个编程步骤 1. 注册一个驱动 注册驱动程序有三种方式: 方式一:Class.forName(“oracle.jdbc.driver.OracleDriver”); JAVA 规范中 ...

  4. 初步涉及JDBC

    一.为什么要使用JDBC: 1.在之前的学习中,我们都是通过控制台来输入信息,创建对象,然后再输出信息,但是这样无法保存数据,每次程序运行都需要重新输入,很麻烦. 2. 在这样的情况下,我们就需要利用 ...

  5. JDBC 常用词汇以及初步思想

    ####JDBC程序访问数据库步骤

  6. JDBC 编程初步

    JDBC 概述 什么是JDBC 是一种用于执行SQL语句的Java API,它由一组用Java语言编写的类和接口组成,JDBC提供了一种操作数据的标准,JDBC的目标是使Java程序员使用JDBC可以 ...

  7. JDBC的初步了解及使用

    一.概念 1.什么是JDBC? JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由 ...

  8. Jdbc Template初步了解

    JdbcTemplate简介 Java语言提供了jdbc来访问数据库,在jdbc api中需要手动的获取和释放连接等资源,使用起来需要做许多重复的工作.Spring在jdbc api的基础上做了抽象和 ...

  9. 浅谈JDBC编程

    一.概述 1.为什么要用JDBC 数据库是程序不可或缺的一部分,每一个网站和服务器的建设都需要数据库.对于大多数应用程序员(此处不包含数据库开发人员)来说,我们更多的不是在DBMS中对数据库进行操纵, ...

随机推荐

  1. JVM性能优化, Part 5 Java的伸缩性

    很多程序员在解决JVM性能问题的时候,花开了很多时间去调优应用程序级别的性能瓶颈,当你读完这本系列文章之后你会发现我可能更加系统地看待这类的问题.我说过JVM的自身技术限制了Java企业级应用的伸缩性 ...

  2. Notification状态栏显示信息

    Notification即通知,用于在通知栏显示提示信息. 在API Level > 11,Notification类中的一些方法被Android声明deprecated(弃用),而在API L ...

  3. matlab 调用 python

    众所周知,Python凭借其众多的第三方模块,近年来被数据分析.机器学习.深度学习等爱好者所喜爱,最主要的是Python还是开源的.另一方面,MATLAB因其在仿真方面的独特优势也被众多人追捧.而在国 ...

  4. 淘宝开源平台(taobao-code)使用

    偶尔之下翻到的这个东西,瞬间觉得足以解决自己在开发过程中的版本控制问题.就注册了一个试试.先是在度娘上搜寻“淘code”,进入官网之后直接注册.然后构建自己的项目,上传代码就OK了. 一.搜寻“淘co ...

  5. DatagramSocket总是发送UDP数据后无法接收数据

    ref:http://blog.chinaunix.net/uid-20771867-id-3416509.html         cmd:telnet localhost 5554        ...

  6. html5 css3 进度条特效

    https://www.html5tricks.com/tag/css3%E8%BF%9B%E5%BA%A6%E6%9D%A1/page/3

  7. ios 表情编码

    感受 :可以做自定义键盘时候用  很方便 还可以在textView里面看到 用户体验很好~ 但是要和服务器管理员协商好,做好解析转码工作,不然网页上是不显示的. ios表情编码 在ios中可以使用可爱 ...

  8. Python OOP(1)

    类(Class): 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. 类变量:类变量在整个实例化的对象中是公用的.类变量定义在类中且在函数体之外. ...

  9. java基础部分小项目

    贪吃蛇项目 import java.awt.Color; import java.awt.Graphics; import java.awt.Toolkit; import java.awt.even ...

  10. HDU 3954 Level up(多颗线段树+lazy操作)

    又是一开始觉得的水题,结果GG了好久的东西... 题意是给你n个英雄,每个英雄开始为1级经验为0,最多可以升到k级并且经验一直叠加,每一级都有一个经验值上限,达到就升级.接着给你两种操作:W li r ...