JAVA_JDBC初步

  public  class TestMySqlConnection{
  public  static  void main(String[] args){
             Class.forName("con.mysql.jdbc.Drive");  // 加载驱动
              
// 数据库:格式:jdbc:mysql(sqlserver):   // 数据库服务器地址:端口(3306为mysql端口,sqlserver 2005为1433);数据库名称
             String url = "jdbc:mysql://localhost:3306;DatabaseName=db_localTest";
             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.      子协议:是桥连接的驱动程序或是数据库管理系统名称。   
  3.      数据源标识:标记找到数据库来源的地址与连接端口。

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

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

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

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

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

Statement分为3中:

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

【2】执行动态SQL语句。通常通过PreparedStatement实例实现。

【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( 2);

} 

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

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

DriverManager 所需要类的完全限定名

返回值:返回与带有给定字符串名的类或者接口相关联的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{   
10             stmt.close() ;   
11         } catch(SQLException e){   
12             e.printStackTrace() ;   
13         }   
14           }   
15            if(conn !=  null){   //  关闭连接connection对象   
16            try{   
17             conn.close() ;   
18          } catch(SQLException e){   
19             e.printStackTrace() ;   
20      }   
21  }  

加载Mysql数据库驱动:

1 try{

2 Class.forName("com.mysql.jdbc.Driver");

3 }catch(Exception e){

4  e.printStackTrace();

5 }

使用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,"李四");

ps.setString(2,"aaa");

ps.setString(3,"男");

ps.setInt(4,23);

ps.excuteUpdate();

con.close()

获得查询结果集:

 1 Class.forName("com.mysql.jdbc.Driver");

 2 String url = "jdbc:mysql://localhost:3306/db_database";

 3 String userName = "root";

 4 String userPwd = "root";

 5

 6 Connection con = DriverManager.getConnection(url,userName,userPwd);

 7 Statement stmt = con.CreateStatement();

 8 String sql = "Select * from tb_User";

 9 ResultSet rs = stmt.exuteQuery(sql);

10 int id,age;

11 String username,userPwd,sex;

12 System.out.println("id\t 用户名\t 性别\t 年龄");

13 while(rs.next()){

14 id = rs.getInt("id");

15 username = rs.getString(2);

16  .

17  .

18  .

19 }

更改数据库中数据:

 1 public static void main(String[] args){

 2 try{

 3 Class.forName("com.mysql.jdbc.Driver");

 4 }catch(Exception e){

 5  e.printStackTrace();

 6  }

 7 String url = "jdbc:mysql://localhost:3306/db_database";

 8 String userName = "root";

 9 String userPwd = "root";

10 String sql = "update tb_users set age = 20 where id = 1";

11 Connection con = DriverManager.getConnection(url,userName,userPwd);

12 Statement stmt = con.CreateStatement();

13  stmt.executeUpdate(sql);

14 System.out.println("修改成功!");\

15  con.close();

16 }

使用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();

}

模糊查询:

 1 //模糊查询

 2 public class Test02{

 3 public static void main(String[] args){

 4 Class.forName("driverName");

 5 String url = "jdbc:mysql://localhost:3306;DatabaseName=tb_User";

 6 String username = "root";

 7 String userPwd = "root";

 8 Connection con = DriverManager.getConnection(url,username,userPwd);

 9 Statement stmt = con.CreateStatement();

10 String sql = "Select * from tb_User where username like '%李%'";

11 ResultSet rs = stmt.excuteQuery(sql);

12 int id,age;

13  String userName,userPwd;sex;

14 System.out.println("编号\t 用户名\t 性别\t 年龄");

15 while(rs.next())

16  {

17 id = rs.getInt("id");

18 userName = rs.getString(2);

19 userPwd = rs.getString("password");

20 sex = rs.getString(4);

21 age = rs.getInt("age");

22 System.out.println(id+"\t"+userName+"\t"+sex+"\t"+age);

23  }

24  }

25 }

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

 1 public class TestProcedure01{

 2 public static void main(STrng[] args){

 3 System.out.println("------------调用无参数的存储过程------");

 4 Connection con = null;

 5 CallableStatement callstmt = null;

 6 try

 7  {

 8  Class.forName(ProcessProc.DB_Driver);

 9 con = DriverManager.getConnection(DB_Url,DB_Name,DB_Pwd);

10 callstmt = con.prepareCall("{call TEST_MICHAEL_NOOUT(?,?,?,?)}");

11

12 callstmt.setString(1,"jdbc");

13 callstmt.setString(2,"JDBC");

14 callstmt.setDouble(3,8000.00);

15 callstmt.setString(4,"http://sjsky.iteye.com");

16  callstmt.exceute();

17 System.out.println("-----End------");

18  }

19 catch(Exception e)

20  {

21  e.printStackTrace(System.out);

22 }finally{

23 if (callstmt!=null) {

24  callstmt.close();

25  }

26 if (con!=null) {

27  con.close();

28  }

29  }

30  }

31 }

34 static class ProcessProc{

35 private final static String DB_Driver = "mysql.jdbc.driver";

36 private final static String DB_Url = "jdbc:mysql://localhost:3306;Db_User";

37 private final static String DB_Name = "root";

38 private final static STring DB_Pwd = "root";

39 }

你可能感兴趣的:(java)