Java中的JDBC的使用方法有哪些?

JDBC其实一套规范(接口)

数据库厂商需要实现此接口(实现类)--数据库驱动

jdbc的作用

可以和数据库创建链接

发送sql语句

接收返回值,处理结果

api详解(java.sql或者javaX.sql)

DriverManager 类:

管理一组 JDBC 驱动程序的基本服务。

常用方法:  registerDriver(Driver):注册驱动

查看 mysql的Driver的时候有下面一段代码: 

发现在类加载的时候已经注册过驱动,我们以后只需要把Driver加载到内存即可

类.Class

对象.getClass()

Class.forName("全限定名(包名+类名)")

以后开发中我们通过Class.forName("com.mysql.jdbc.Driver")把驱动注册进去即可.

Connection 接口:

创建语句执行者:  Connection

conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/database", "root", "123456");

常用方法: 

Statement createStatement():创建Statement -语句执行者

PreparedStatement prepareStatement(String sql) :创建一个预编译的语句执行对象

CallableStatement prepareCall(String sql) :(了解) 创建一个 CallableStatement 对象来调用数据库存储过程。  Statement 接口(容易产生sql注入, 后期使用PreparedStatement. 后面会有blog说明这个问题)

sql语句执行者:

Statement st=conn.createStatement();

常用方法:

ResultSet executeQuery(String sql) :执行查询语句,返回一个集合

int executeUpdate(String sql) :执行更新 插入 删除语句,返回影响行数.

boolean execute(sql):执行给定的 SQL 语句,该语句可能返回多个结果。

若返回true ,执行是的查询语句

调用 getResultSet 获取查询结果

若返回false,执行的是更新 插入 删除语句

调用 getUpdateCount 获取影响的行数

ResultSet 接口

返回的查询结果:

String sql = "...";

ResultSet rs=st.executeQuery(sql);

常用方法:

boolean next() :判断是否有下一条记录,并且移动到下一行

获取内容:getXXX(参数)

参数的写法:

1.字段名称 字符串

2.第几列 从1开始

getInt()

getString()

getObject() 

实例JDBCUtil类的书写

(1)配置文件 jdbc.properties

drivername=com.mysql.jdbc.Driver

url=jdbc:mysql://localhost:3306/ddatabaseName

user=root

password=1234

(2)JDBCUtil.java

1 import java.sql.Connection;

2 import java.sql.DriverManager;

3 import java.sql.ResultSet;

4 import java.sql.SQLException;

5 import java.sql.Statement;

6 import java.util.ResourceBundle;

7

8 public class JDBCUtil {

9    //ctrl + shift + x  转成大写

10    //ctrl + shift + y  转成小写

11    static final String DRIVERNAME;

12    static final String URL;

13    static final String USERNAME;

14    static final String PASSWORD;

15   

16    static{

17       

18        /*通过ResourceBundle 专门用来加载properties文件

19        ResourceBundle bundle=ResourceBundle.getBundle("文件名称");

20       

21        通过 bundle.getString(键的名字)

22        String value=bundle.getString("url");

23    */

24   

25        ResourceBundle bundle=ResourceBundle.getBundle("jdbc");

26        DRIVERNAME=bundle.getString("drivername");

27        URL=bundle.getString("url");

28        USERNAME=bundle.getString("user");

29        PASSWORD=bundle.getString("password");

30    }

31   

32    static{

33        try {

34            Class.forName(DRIVERNAME);

35        } catch (ClassNotFoundException e) {

36            e.printStackTrace();

37        }

38    }

39   

40    //获取链接

41    public static Connection getConnection() throws SQLException{

42        return DriverManager.getConnection(URL,USERNAME,PASSWORD);

43    }

44   

45    //释放资源

46    public static void closeResource(Connection conn,Statement st,ResultSet rs){

47        if (rs!=null) {

48            try {

49                rs.close();

50            } catch (SQLException e) {

51                e.printStackTrace();

52            }

53        }

54       

55        if (st!=null) {

56            try {

57                st.close();

58            } catch (SQLException e) {

59                e.printStackTrace();

60            }

61        }

62       

63        if (conn!=null) {

64            try {

65                conn.close();

66            } catch (SQLException e) {

67                e.printStackTrace();

68            }

69        }

70       

71    }

72 }

(3)CRUDDemo, 使用PreparedStatement方式

  1 public class PPCRUDDemo {

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

  3        //插入

  4        //insert("赵四","123","zhaosi@163.com");

  5        //更新

  6        //updateByName("赵四","尼古拉斯.赵四");

  7        //获取

  8        //getByName("尼古拉斯.赵四");

  9        //删除

10        deleteByName("尼古拉斯.赵四");

11    }

12

13    private static void deleteByName(String string) {

14        //模版

15        Connection conn=null;

16        PreparedStatement st=null;

17        ResultSet rs=null;

18       

19        try {

20            //获取链接

21            conn=JDBCUtil.getConnection();

22            //编写sql

23            String sql="delete from user where username =?";

24            //获取预编译执行者

25            st=conn.prepareStatement(sql);

26            //设置参数

27            st.setString(1, string);

28            //执行sql

29            int i = st.executeUpdate();

30            //处理结果

31            if (i>0) {

32                System.out.println("成功");

33            }else{

34                System.out.println("失败");

35            }

36        } catch (Exception e) {

37            e.printStackTrace();

38        }finally{

39            //释放资源

40            JDBCUtil.closeResource(conn, st, rs);

41        }

42       

43    }

44

45    private static void getByName(String string) {

46

47        Connection conn=null;

48        PreparedStatement st=null;

49        ResultSet rs=null;

50       

51        try {

52            conn=JDBCUtil.getConnection();

53            String sql="select * from user where username=? limit 1";

54            st=conn.prepareStatement(sql);

55           

56            st.setString(1, string);

57            rs=st.executeQuery();

58            if (rs.next()) {

59                System.out.println(rs.getInt(1)+":"+rs.getString(2)+":"+rs.getObject(3)+":"+rs.getObject(4));

60            }

61        } catch (Exception e) {

62            // TODO: handle exception

63            e.printStackTrace();

64        }finally{

65           

66            JDBCUtil.closeResource(conn, st, rs);

67        }

68       

69    }

70

71    private static void updateByName(String oldName, String newName) {

72        Connection conn=null;

73        PreparedStatement st=null;

74        ResultSet rs=null;

75       

76        try {

77            conn=JDBCUtil.getConnection();

78            String sql="update user set username = ? where username = ?";

79            st=conn.prepareStatement(sql);

80            st.setString(1, newName);

81            st.setString(2, oldName);

82           

83            int i=st.executeUpdate();

84            //处理结果

85            if (i>0) {

86                System.out.println("成功");

87            }else{

88                System.out.println("失败");

89            }

90           

91        } catch (Exception e) {

92            e.printStackTrace();

93        }finally{

94            JDBCUtil.closeResource(conn, st, rs);

95        }

96       

97       

98    }

99

100    private static void insert(String username, String password, String email) {

101        Connection conn=null;

102        PreparedStatement st=null;

103        ResultSet rs=null;

104       

105        try {

106            //获取链接

107            conn=JDBCUtil.getConnection();

108            //编写sql

109            String sql="insert into user values(null,?,?,?)";

110            //获取预编译语句执行者

111            st=conn.prepareStatement(sql);

112            //设置参数

113            st.setString(1, username);

114            st.setString(2, password);

115            st.setString(3, email);

116            //执行sql

117            int i=st.executeUpdate();

118            //处理结果

119            if (i>0) {

120                System.out.println("成功");

121            }else{

122                System.out.println("失败");

123            }

124        } catch (Exception e) {

125            e.printStackTrace();

126        }finally{

127            JDBCUtil.closeResource(conn, st, rs);

128        }

129    }

130

131 }

这里没有多么高深的东西在,都要靠熟能生巧!

Java学习视频

Java基础:

Java300集,Java必备优质视频_手把手图解学习Java,让学习成为一种享受

Java项目:

【Java游戏项目】1小时教你用Java语言做经典扫雷游戏_手把手教你开发游戏

【Java毕业设计】OA办公系统项目实战_OA员工管理系统项目_java开发

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,968评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,601评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,220评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,416评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,425评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,144评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,432评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,088评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,586评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,028评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,137评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,783评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,343评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,333评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,559评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,595评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,901评论 2 345

推荐阅读更多精彩内容