仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1038|回复: 18
打印 上一主题 下一主题

[学习教程] JAVA教程之深切浅出进修Hibernate框架(二):JDBC基本操纵仓酷云

[复制链接]
山那边是海 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:29:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
再举这样一个例子:如果你想对一个数字取绝对值,你会怎么做呢?java的做法是intc=Math.abs(-166);而ruby的做法是:c=-166.abs。呵呵,这就看出了java与ruby的区别。上篇博客《深切浅出进修Hibernate框架(一):从实例动手初识Hibernate框架》复杂先容了一下Hibernate框架,而且举了一个实例来懂得Hibernate。这篇博客将先容JDBC的基础操纵,提及这JDBC,年夜部分程序员是已十分熟习了,为了我的Hibernate进修的连载,以是在这篇要复杂先容一下JDBC的有关操纵,由于这是Hibernate完成的基本,没有了JDBC也就没有了Hibernate框架,由于Hibernate框架是对JDBC做的高度封装。这篇博客次要先容JDBC创建数据库设置毗连和JDBC中的相干类和接口和JDBC各类操纵的完成。
但愿读者可以仔细的进修进修JDBC,基本的工具才是最主要的,没有基本别的统统都是浮云,固然这篇也是今后要深切进修Hibernate框架的基本和伏笔,但愿读者可以好勤学习一下。
先说甚么是JDBC,JDBC是由一组用java编写的类和接口的构成。在详细的开辟中,JDBC供应了一个尺度的API,有了它我们可以用JAVAAPI来编写数据库使用程序。
上面来讲怎样创建和设置毗连。数据库毗连是JDBC举行查询的先决前提,并且经由了开辟的伴侣门都晓得,如今支流的数据库都供应了自己公用的数据库毗连驱动,有了数据库毗连驱动给我们带来了很多匡助,可是也给我们带来了很多贫苦,比方版本不兼容等等成绩。
上面以Mysql为例来创建和设置毗连:
1.到场驱动程序。拷贝Mysql的JDBC驱动到运转程序可以找到的目次
2.确保Mysql数据库处于运转形态(前两步是傻瓜式级其余操纵在这里就不先容了)
3.编写JDBC程序(在这里给出源代码)
源代码:
[java]

  • importjava.sql.Connection;
  • importjava.sql.DriverManager;
  • importjava.sql.SQLException;

  • publicclassDBUtil{

  • /**
  • *获得Connection
  • *@return
  • */
  • publicstaticConnectiongetConnection(){

  • Connectionconn=null;
  • try{

  • Class.forName("com.mysql.jdbc.Driver");
  • Stringurl="jdbc:mysql://localhost:3306/User";
  • Stringusername="root";
  • Stringpassword="123";
  • conn=DriverManager.getConnection(url,username,password);
  • }catch(ClassNotFoundExceptione){
  • e.printStackTrace();
  • }catch(SQLExceptione){
  • e.printStackTrace();
  • }
  • returnconn;
  • }

  • publicstaticvoidmain(String[]args){
  • System.out.println("测试入手下手");
  • System.out.println(DBUtil.getConnection());
  • System.out.println("测试停止");
  • }
  • }

importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.SQLException;publicclassDBUtil{/***获得Connection*@return*/publicstaticConnectiongetConnection(){Connectionconn=null;try{Class.forName("com.mysql.jdbc.Driver");Stringurl="jdbc:mysql://localhost:3306/User";Stringusername="root";Stringpassword="123";conn=DriverManager.getConnection(url,username,password);}catch(ClassNotFoundExceptione){e.printStackTrace();}catch(SQLExceptione){e.printStackTrace();}returnconn;}publicstaticvoidmain(String[]args){System.out.println("测试入手下手");System.out.println(DBUtil.getConnection());System.out.println("测试停止");}}
了局截图:

<br>
上面先容一下JDBC接口:
JDBC接口是指举行数据库操纵供应的大众会见办法,利用这些办法能够简化对数据库的操纵,JDBC的接口放在了JDK中的java.sql包里。
截图:

<br>
这内里就先容几个对照重用的也是对照主要的几个接口和一个driverManager类。

<br>
下面一部分都是单调的观点和实际,上面来看看JDBC怎样使用这些接口和类来完成各类操纵的。
Statement和PreparedStatement:
Statement接口代表一个数据库的形态,在向数据库发送响应的SQL语句时分都要用这两个接口。而statement是操纵没有参数的sql语句,而preparedStatement便可以操纵有参数的,也能够操纵没有参数的,以是preparedStatement制止了sql注进成绩。
举例:
Statement源代码:
[java]

  • importjava.sql.Connection;
  • importjava.sql.SQLException;
  • importjava.sql.Statement;


  • publicclassStatementTest{


  • publicstaticvoidmain(String[]args)throwsSQLException{
  • Stringsql="insertintoUser(name,password,id)values(1,2,11111)";
  • Connectionconn=DBUtil.getConnection();
  • Statementstmt=conn.createStatement();
  • stmt.executeUpdate(sql);
  • System.out.println("实行乐成");

  • }

  • }

importjava.sql.Connection;importjava.sql.SQLException;importjava.sql.Statement;publicclassStatementTest{publicstaticvoidmain(String[]args)throwsSQLException{Stringsql="insertintoUser(name,password,id)values(1,2,11111)";Connectionconn=DBUtil.getConnection();Statementstmt=conn.createStatement();stmt.executeUpdate(sql);System.out.println("实行乐成");}}
PreparedStatement源代码:
[java]

  • importjava.sql.Connection;
  • importjava.sql.PreparedStatement;
  • importjava.sql.SQLException;
  • importjava.sql.Statement;


  • publicclassPreparedStatementTest{


  • publicstaticvoidmain(String[]args)throwsSQLException{
  • Stringsql="insertintoUser(name,password,id)values(?,?,?)";
  • Connectionconn=DBUtil.getConnection();
  • PreparedStatementpstmt=conn.prepareStatement(sql);
  • pstmt.setString(1,"1");
  • pstmt.setString(2,"2222");
  • pstmt.setString(3,"3333");
  • pstmt.executeUpdate();
  • System.out.println("实行乐成");

  • }

  • }

importjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.SQLException;importjava.sql.Statement;publicclassPreparedStatementTest{publicstaticvoidmain(String[]args)throwsSQLException{Stringsql="insertintoUser(name,password,id)values(?,?,?)";Connectionconn=DBUtil.getConnection();PreparedStatementpstmt=conn.prepareStatement(sql);pstmt.setString(1,"1");pstmt.setString(2,"2222");pstmt.setString(3,"3333");pstmt.executeUpdate();System.out.println("实行乐成");}}
ResultSet
ResultSet接口是查询了局集接口,它前往的了局集举行处置。
举例:
源代码:
[java]

  • importjava.sql.Connection;
  • importjava.sql.PreparedStatement;
  • importjava.sql.ResultSet;
  • importjava.sql.SQLException;


  • publicclassResultSetTest{


  • publicstaticvoidmain(String[]args)throwsSQLException{
  • Stringsql="select*fromUserwhereid=?";
  • Connectionconn=DBUtil.getConnection();
  • PreparedStatementpstmt=conn.prepareStatement(sql);
  • pstmt.setString(1,"11111");
  • ResultSetrs=pstmt.executeQuery();
  • if(rs.next()){
  • System.out.println("name="+rs.getString("name"));
  • System.out.println("password="+rs.getString("password"));
  • }
  • }

  • }

importjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;publicclassResultSetTest{publicstaticvoidmain(String[]args)throwsSQLException{Stringsql="select*fromUserwhereid=?";Connectionconn=DBUtil.getConnection();PreparedStatementpstmt=conn.prepareStatement(sql);pstmt.setString(1,"11111");ResultSetrs=pstmt.executeQuery();if(rs.next()){System.out.println("name="+rs.getString("name"));System.out.println("password="+rs.getString("password"));}}}
了局:

<br>
ResultSetMetaData
ResultSetMetaData接口能够经由过程数组情势,遍历数据库的各个字段的属性,关于开辟者来讲,这个机制意义十分年夜。
举例:
源代码:
[java]

  • importjava.sql.Connection;
  • importjava.sql.ResultSet;
  • importjava.sql.ResultSetMetaData;
  • importjava.sql.SQLException;
  • importjava.sql.Statement;


  • publicclassResultSetMetaDataTest{


  • publicstaticvoidmain(String[]args)throwsSQLException{
  • Stringsql="select*fromUserorderbyid";
  • Connectionconn=DBUtil.getConnection();
  • //取得能够前后转动的范例
  • Statementstmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);

  • ResultSetrs=stmt.executeQuery(sql);
  • ResultSetMetaDatarsm=rs.getMetaData();
  • System.out.println("共获的"+rsm.getColumnCount()+"列信息");
  • for(inti=1;i<rsm.getColumnCount();i++){
  • System.out.println("第"+i+"列的称号为"+rsm.getColumnName(i)+"范例为"+rsm.getColumnTypeName(i));

  • }

  • }

  • }

importjava.sql.Connection;importjava.sql.ResultSet;importjava.sql.ResultSetMetaData;importjava.sql.SQLException;importjava.sql.Statement;publicclassResultSetMetaDataTest{publicstaticvoidmain(String[]args)throwsSQLException{Stringsql="select*fromUserorderbyid";Connectionconn=DBUtil.getConnection();//取得能够前后转动的范例Statementstmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);ResultSetrs=stmt.executeQuery(sql);ResultSetMetaDatarsm=rs.getMetaData();System.out.println("共获的"+rsm.getColumnCount()+"列信息");for(inti=1;i<rsm.getColumnCount();i++){System.out.println("第"+i+"列的称号为"+rsm.getColumnName(i)+"范例为"+rsm.getColumnTypeName(i));}}}
了局:

<br>
总结:
这一篇博客对JDBC、JDBC一些主要接口做了扼要的剖析,次要是为了让读者对JDBC有所懂得,对今后进修Hibernate有很年夜匡助,hibernate的操纵终极也是转换为jdbc的操纵。以是这篇博客的意义在于前面进修深切的引子。进修JDBC以后,鄙人一篇博客要先容java反射机制,由于这个常识也对今后深切进修Hibernate有十分年夜的匡助。敬请等候!

但是对于JAVA技术类的学习,我觉得大课堂反而会影响自身独立思考的过程,因为上课的时候,老师讲课的速度很快为了不遗漏要点,通常会仔细的听,
飘飘悠悠 该用户已被删除
沙发
发表于 2015-1-21 07:50:04 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
只想知道 该用户已被删除
板凳
发表于 2015-1-26 09:01:16 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
活着的死人 该用户已被删除
地板
发表于 2015-1-28 22:43:16 来自手机 | 只看该作者
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
第二个灵魂 该用户已被删除
5#
发表于 2015-2-2 21:59:06 | 只看该作者
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
爱飞 该用户已被删除
6#
发表于 2015-2-8 08:31:09 | 只看该作者
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
谁可相欹 该用户已被删除
7#
发表于 2015-2-25 03:17:14 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
兰色精灵 该用户已被删除
8#
发表于 2015-3-11 20:15:20 | 只看该作者
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
再见西城 该用户已被删除
9#
发表于 2015-3-13 09:07:22 | 只看该作者
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
变相怪杰 该用户已被删除
10#
发表于 2015-3-20 17:37:05 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
小妖女 该用户已被删除
11#
发表于 2015-3-24 20:57:24 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
若天明 该用户已被删除
12#
发表于 2015-3-25 20:18:21 | 只看该作者
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
不帅 该用户已被删除
13#
发表于 2015-4-1 15:11:06 | 只看该作者
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
简单生活 该用户已被删除
14#
发表于 2015-4-5 20:39:51 | 只看该作者
是一种语言,用以产生「小应用程序(Applet(s))
山那边是海 该用户已被删除
15#
 楼主| 发表于 2015-4-6 21:57:38 | 只看该作者
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
乐观 该用户已被删除
16#
发表于 2015-4-12 11:24:21 | 只看该作者
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
再现理想 该用户已被删除
17#
发表于 2015-5-6 12:10:38 | 只看该作者
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
飘灵儿 该用户已被删除
18#
发表于 2015-5-7 22:21:39 | 只看该作者
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
因胸联盟 该用户已被删除
19#
发表于 2015-5-10 15:38:53 | 只看该作者
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-4-28 15:03

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表