JAVA入门到精通-第66讲-sql server-JDBC

sql server JDBC-ODBC
sql server面对各种语言的使用;
odbc相当于一个开关接口;
驱动就是一堆函数、方法或者包;
JDBC驱动:数据库直接支持JAVA程序的调用;
Hibernate:orm技术,对象关系映射;
连接方式不一样,其他大同小异;
 
为了安全,SQL server提供了一个接口ODBC;
jdbc-odbc对JAVA提供接口;
直接提供jdbc驱动,速度有一定优势;
 
-PreparedStatement[火箭车]
com.microsoft.jdbc.sqlserver.SQLServerDriver
 
 
 
1
1
 
 
 
 
 
1
com.microsoft.jdbc.sqlserver.SQLServerDriver
 
 
 
rs=ps.executeQuery();
 
如果是*,需要getString(2)......
 
JDBC-ODBC桥连,不需要包;
如果是JDBC方式,需要引入三个JAR包;
JDBC驱动包;
单击项目,右键-Properties-Java Build Path-External JARs
 
如果不按照数字走,也可以按照名称走:
 
-多表查询
多表和单表是一样的;
 
-添加,删除,修改
executeUpdate();
给?赋值
ps.setInt (1, 100);
ps.setString(2, "财务部")
ps.setString(3, "大学城")
 
-java操作sql server数据库
表并不需要真实的存在;
在java中 如何使用 ddl语句(create , drop, backup ...)
 
127.0.0.1 要连接的数据库的IP
1433表示sql  server的默认端口
涉及到网络的东西,都需要端口
(程序与程序之间通过网络连接);
SQLserver 2000: 1433
Oracle : 1521
MYSQL:3306
Https: 80
FTP: 21
SSH:22
TOMCAT:8080
ps=ct.prepareStatement("create database vvv");
boolean b=ps.execute();
返回一个bool值
 
//关闭资源
ps 、ct 
 
-创建表
create table xxx(aa  int)
 
-备份数据库
backup database  bbb  to disk='xxx.bak'
将来可以做一个线程定时去备份数据库
 
 
=====================
 

JDBC-ODBC桥连操作sql serverJDBC驱动直连操作sql server的区别:

1JDBC-ODBC桥连sql server无需引入外部驱动

2JDBC直连需要引入微软提供的JDBC驱动

 

JDBC直连sqlserver示例[Sql_test3.java]

/**
 * JDBC方式去操作数据库(单表操作)
 * 1、引入sql包
 * 2、sqlserver2000需要引入三个jar包,分别是msbase.jar和mssqlserver.jar和msutil.jar
 * 3、sqlserver2005/2008/2012版本中可以引入sqljdbc.jar或sqljdbc4.jar两个微软提供的JDBC包,官方目前推出2.0/3.0/4.0版本
 * 4、使用sqljdbc4.jar后可以不使用加载驱动Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");而直接连接数据库
 * 5、使用sqljdbc.jar则需要加载驱动
 * 6、特别说明,如果取值是按编号取,则需一一对应;如果按字段列名取值,则可以灵活取值
 */
package com.sqlserver;
import java.sql.*;
public class Sql_test3 {
    public static void main(String[] args) {
        //定义需要的对象
        PreparedStatement ps=null;
        Connection ct=null;
        ResultSet rs=null;
        try {
            //初始化我们的对象
            //1、加载驱动
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            //2、得到连接
            ct=DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;databaseName=test;user=sa;password=sa;");
            if(!ct.isClosed()){
                System.out.println("数据库连接成功");
            }else{
                System.out.println("数据库连接失败");
            }
            //3、创建PreparedStatement
//          ps=ct.prepareStatement("select * from emp");
            ps=ct.prepareStatement("select ename,sal,deptno from emp");
            //4、执行(查询就用executeQuery(),增加、删除、修改就用executeUpdate())
            rs=ps.executeQuery();
            //循环取出,雇员的名字、雇员的薪水,部门编号
            while(rs.next()){
//              String ename=rs.getString(2);
//              float sal=rs.getFloat(6);
//              int deptno=rs.getInt(8);
//              String ename=rs.getString(1);//对应的列号可以取出数据
//              float sal=rs.getFloat(2);
//              int deptno=rs.getInt(3);
                String ename=rs.getString("ename");//使用字段名也可以取出数据
                float sal=rs.getFloat("sal");
                int deptno=rs.getInt("deptno");
                System.out.println(ename+"	"+sal+"	"+deptno);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally{
            try {
                if(rs!=null){
                    rs.close();
                }
                if(ps!=null){
                    ps.close();
                }
                if(ct!=null){
                    ct.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}
--------------------------------------------------------------------

多表操作,示例[Sql_test4.java]

 
 1 /**
 2  * JDBC方式去操作数据库(多表操作)
 3  * 1、引入sql包
 4  * 2、sqlserver2000需要引入三个jar包,分别是msbase.jar和mssqlserver.jar和msutil.jar
 5  * 3、sqlserver2005/2008/2012版本中可以引入sqljdbc.jar或sqljdbc4.jar两个微软提供的JDBC包,官方目前推出2.0/3.0/4.0版本
 6  * 4、使用sqljdbc4.jar后可以不使用加载驱动Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");而直接连接数据库
 7  * 5、使用sqljdbc.jar则需要加载驱动
 8  * 6、特别说明,如果取值是按编号取,则需一一对应;如果按字段列名取值,则可以灵活取值
 9  */
10 package com.sqlserver;
11 import java.sql.*;
12 public class Sql_test4 {
13     public static void main(String[] args) {
14         //定义需要的对象
15         PreparedStatement ps=null;
16         Connection ct=null;
17         ResultSet rs=null;
18         try {
19             //初始化我们的对象
20             //1、加载驱动
21             Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
22             //2、得到连接
23             ct=DriverManager.getConnection
24              ("jdbc:sqlserver://127.0.0.1:1433;databaseName=test;user=sa;password=sa;");
25             if(!ct.isClosed()){
26                 System.out.println("数据库连接成功");
27             }else{
28                 System.out.println("数据库连接失败");
29             }
30 //          //3、创建PreparedStatement
31           ps=ct.prepareStatement("select ename,sal,dname from emp,dept where emp.deptno=dept.deptno");
32          //4、执行(查询就用executeQuery(),增加、删除、修改就用executeUpdate())
33           rs=ps.executeQuery();
34           //循环取出,雇员的名字、雇员的薪水,部门名称
35           while(rs.next()){
36               String ename=rs.getString("ename");//使用字段名也可以取出数据
37               float sal=rs.getFloat("sal");
38               String dname=rs.getString("dname");
39               System.out.println(ename+"	"+sal+"	"+dname);
40           }
41           //5、创建PreparedStatement
42          ps=ct.prepareStatement("insert into dept values(?,?,?)");
43           //6、给?赋值
44           ps.setInt(1, 60);
45           ps.setString(2, "Finance");
46           ps.setString(3, "Alaska");
47           //7、执行(查询就用executeQuery(),增加、删除、修改就用executeUpdate())
48           int i=ps.executeUpdate();
49           if(i==1){
50               System.out.println("添加数据成功");
51           }else{
52             System.out.println("添加数据失败");
53           }
54           //8、创建PreparedStatement
55           ps=ct.prepareStatement("delete from dept where deptno=?");
56           //9、给?赋值
57           ps.setInt(1, 50);
58           //10、执行(查询就用executeQuery(),增加、删除、修改就用executeUpdate())
59           int i=ps.executeUpdate();
60           if(i==1){
61               System.out.println("删除数据成功");
62           }else{
63              System.out.println("删除数据失败");
64           }
65             //11、创建PreparedStatement
66             ps=ct.prepareStatement("update dept set deptno=? where loc=?");
67             //12、给?赋值
68             ps.setInt(1, 50);
69             ps.setString(2, "Alaska");
70             //13、执行(查询就用executeQuery(),增加、删除、修改就用executeUpdate())
71             int i=ps.executeUpdate();
72             if(i==1){
73                 System.out.println("修改数据成功");
74             }else{
75                 System.out.println("修改数据失败");
76             }
77         } catch (Exception e) {
78             e.printStackTrace();
79         }finally{
80             try {
81                 if(rs!=null){
82                     rs.close();
83                 }
84                 if(ps!=null){
85                     ps.close();
86                 }
87                 if(ct!=null){
88                     ct.close();
89                 }
90             } catch (SQLException e) {
91                 e.printStackTrace();
92             }
93         }
94     }
95 }
 
 
 

 

 

-------------------------------------------------------------------------------

java程序操作sql server

StatementPreparedStatement的区别(2)

看下面两段程序片断:

Code Fragment 1:
 String updateString="UPDATE COFFEES SET SALES=75"+"WHERE COF_NAME LIKE 'Colombian'";
 stmt.executeUpdate(updateString);


Code Fragment 2:
 PreparedStatement updateSales=con.prepareStatement("UPDATE COFFEES SET SALES=? WHERE COF_NAME LIKE ?");
 updateSales.setInt(1,75);
 updateSales.setString(2,"Colombian");
 updateSales.executeUpdate();
 
 
 
   后者使用了PreparedStatement,而前者是Statement,PreparedStatement不仅包含了SQL语句,而且大多数情况下这个语句已被预编译过,当其执行时,只需DBMS运行SQL语句,而不必先编译。当你需要执行Statement对象多次的时候,PreparedStatement对象将会降低运行时间,加快了访问数据库的速度。 好处是,不必重复SQL语句的句法,而只需要改其中变量的值,便可重新执行SQL语句。选择PreparedStatement对象与否,在于相同句法的SQL语句是否执行了多次,而且两次之间的差别仅是变量的不同。如仅执行一次的话,它和普通的对象无差异,体现不出预编译的优越性。
java操作sql server数据库(表)[Sql_test5.java]
在软件公司实际开发过程中,也许需要你在java程序中来控制对数据库(表)的创建、删除、备份、恢复工作,这是我们又该怎样完成呢?
 1 /**
 2  * 在java中如何使用ddl语句(credate(创建),drop(删除),backup(备份),restore(恢复))数据库
 3  */
 4 package com.sqlserver;
 5 import java.sql.*;
 6 public class Sql_test5 {
 7     public static void main(String[] args) {
 8         //定义需要的对象
 9         PreparedStatement ps=null;
10         Connection ct=null;
11         ResultSet rs=null;
12         try {
13             //1、加载驱动
14             Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
15             //2、得到连接
16           ct=DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;databaseName=test;user=sa;password=sa;");
17             if(!ct.isClosed()){
18                 System.out.println("数据库连接成功");
19             }else{
20                 System.out.println("数据库连接失败");
21             }
22 //          //3、创建ps,创建数据库
23 //          ps=ct.prepareStatement("create database vvv");
24 //          //如果执行的是ddl语句
25 //          if(!ps.execute()){
26 //              System.out.println("创建数据库成功");
27 //          }else{
28 //              System.out.println("创建数据库失败");
29 //          }
30             //4、创建ps,创建表
31 //          ps=ct.prepareStatement("create table xxx(aa int)");
32 //          //如果执行的是ddl语句
33 //          if(!ps.execute()){
34 //              System.out.println("创建表成功");
35 //          }else{
36 //              System.out.println("创建表失败");
37 //          }
38             //5、备份数据库
39 //          ps=ct.prepareStatement("backup database vvv to disk='e:/vvv.bak'");
40 //          if(!ps.execute()){
41 //              System.out.println("备份数据库成功");
42 //          }else{
43 //              System.out.println("备份数据库失败");
44 //          }
45             //6、恢复数据库
46             ps=ct.prepareStatement("restore database vvv from disk='e:/vvv.bak'");
47             if(!ps.execute()){
48                 System.out.println("恢复数据库成功");
49             }else{
50                 System.out.println("恢复数据库失败");
51             }
52            
53         } catch (Exception e) {
54             e.printStackTrace();
55         }finally{
56             try {
57                 if(rs!=null){
58                     rs.close();
59                 }
60                 if(ps!=null){
61                     ps.close();
62                 }
63                 if(ct!=null){
64                     ct.close();
65                 }
66             } catch (SQLException e) {
67                 e.printStackTrace();
68             }
69         }
70     }
71 }

原文地址:https://www.cnblogs.com/xuxaut-558/p/10035883.html