仓酷云

标题: JAVA教程之JDBC 进门(三) - 设置表 [打印本页]

作者: 金色的骷髅    时间: 2015-1-18 11:18
标题: JAVA教程之JDBC 进门(三) - 设置表
轮性能微软曾做过一个例子,就是同一个项目用java和.net来作,结果开发周期,.net是java的一半,性能java是.net的十分之一,代码量java是.net的三倍。呵呵,这说明了什么,.net的全方位比java好。但是有的人说.net不能跨平台,这个问题我和我同学曾讨论过,都认为微软的.net很可能早都可以跨平台了,但是微软为了保护他们的操作系统,所以才没有推出跨平台的.net,只是推出了跨语言的.net,axeon
创立表
  起首,我们在我们的示例数据库创立个中一张表COFFEES,包括在咖啡店所卖咖啡的需要的信息,包含咖啡名字,他们的代价,本礼拜卖了几磅及迄今为止卖的数量。关于COFFEES表我们今后会具体形貌,以下:

COF_NAMESUP_IDPRICESALESTOTAL
Colombian1017.9900
French_Roast498.9900
Espresso1509.9900
Colombian_Decaf1018.9900
French_Roast_Decaf499.9900

  存储咖啡名的列是COF_NAME,它的SQL数据范例是VARCHAR,最年夜的长度为32个字符。由于我们所卖的每品种型咖啡都利用分歧的名字,名字可用于作为独一辨认咖啡的标识,因而可用于作主键。第二个列叫SUP_ID,用于保留咖啡供给商标识;其SQL数据范例为INTEGER。第3列叫PRICE,由于它必要保留带小数的十进制数,因而它的SQL范例为FLOAT。(注重,一般钱的SQL范例为DECIMAL或NUMERIC,但在分歧DBMSs间存在差别,为了不于老版本的JDBC的不兼容性在本教程我们接纳更尺度的FLOAT范例)SALES列的SQL范例为INTEGER,其值为本礼拜所卖咖啡的磅数。最初一列,TOTAL的SQL范例为INTEGER,保留了迄今为止所卖咖啡的总磅数。

  数据库里的第二个表SUPPLIERS,保留了每一个供给商的信息:

SUP_IDSUP_NAMESTREETCITYSTATEZIP
101Acme,Inc.99MarketStreetGroundsvilleCA95199
49SuperiorCoffee1PartyPlaceMendocinoCA95460
150TheHighGround100CoffeeLaneMeadowsCA93966

  COFFEES跟SUPPLIERS都包括列SUP_ID,它意味着能够用SELECT语句从这两张表中获得有关信息。列SUP_ID是SUPPLIERS表的主键,用于独一辨认每一个咖啡供给商。在COFFEES表中,SUP_ID列被称外键。注重每一个SUP_ID值在SUPPLIERS内外只呈现一次;这对主键是必需的。在COFFEES内外,它作为外键,明显它能够有反复的SUP_ID值,由于统一供给商能够供应良多种的咖啡。在本节的最初,你将瞥见怎样在SELECT语句中利用主键及外键的一个例子。

  上面的SQL语句用于创立COFFEES表。列由列名跟空格跟SQL范例构成。列(包含列名及其SQL范例)跟下一个之间用逗号分开。VARCHAR范例创立界说了最年夜长度,因而它必要有一个参数来暗示最年夜长度。参数必需在范例前面的括号内。SQL语句以下,列COF_NAME的长度被限制为不得凌驾32个字符:

CREATETABLECOFFEES
(COF_NAMEVARCHAR(32),
SUP_IDINTEGER,
PRICEFLOAT,
SALESINTEGER,
TOTALINTEGER)

  这些代码不带DBMS语句停止符,由于每一个DBMS都大概分歧。比方,Oracle利用一个分号(;)作为语句的停止,而Sybase利用go。你所利用的驱动程序会主动供应符合的语句停止符,因而你不必把它包含在你的JDBC代码中。

  别的,我们应当指出的的是SQL语句的格局。在CREATETABLE语句中,关头字接纳年夜写字符,而且每一个项目都另起一行。SQL并没有此请求;仅仅是为了更简单浏览。SQL尺度是不辨别关头词的巨细写的,因而,以下例中的SELECT语句能够有多种写法。因而上面两个分歧写法的语句对SQL来讲是一样的。

SELECTFirst_Name,Last_Name
FROMEmployees
WHERELast_NameLIKE"Washington"

selectFirst_Name,Last_NamefromEmployeeswhere
Last_Namelike"Washington"

  但是,引号里的内容是辨别巨细写的:在名字"Washington"里"W"必需被年夜写,而且余下的字符必需是小写的。

  关于标识,分歧的DBMS有分歧的请求,比方,某些DBMSs请求那些列名及表名必需跟创立时的一样,有些则没有此请求。为平安起见,我们全体利用年夜写标识如COFFEES、SUPPLIERS,由于我们是那样界说他们的。

  到止我们写了创立COFFEES表的SQL语句。如今我们在它表面加上引号(使它成为字符串),而且字符串赋值给变量createTableCoffees,在今后的JDBC代码中我们可使用此变量。正如看到的,DBMS其实不在乎分行,但对Java言语来,String对象分行是通不外编译的。因此,我们能够用加号(+)把每行的串联接。

StringcreateTableCoffees="CREATETABLECOFFEES"+
"(COF_NAMEVARCHAR(32),SUP_IDINTEGER,PRICEFLOAT,"+
"SALESINTEGER,TOTALINTEGER)";

  我们在CREATETABLE语句中利用的数据范例是通用的SQL范例(也称JDBC范例)它们在类java.sql.Types中界说。DBMSs一般利用这些尺度的范例,因而,当你要实验一些JDBC使用程序时,你能够间接利用CreateCoffees.java使用程序,它利用了CREATETABLE语句。假如你的DBMS利用了它的本人的当地的范例名字,我们为你供给别的的使用程序,我们将在前面具体注释。

  在使用任何使用程序前,固然,我们将让你懂得JDBC的基本。

创立JDBCStatements对象
  Statement对象用于把SQL语句发送到DBMS。你只须复杂地创立一个Statement对象而且然后实行它,利用得当的办法实行你发送的SQL语句。对SELECT语句来讲,可使用executeQuery。要创立或修正表的语句,利用的办法是executeUpdate。

  必要一个活泼的毗连的来创立Statement对象的实例。鄙人面的例子中,我们利用我们的Connection对象con创立Statement对象stmt:

Statementstmt=con.createStatement();

  到此stmt已存在了,但它还没有把SQL语句传送到DBMS。我们必要供应SQL语句作为参数供应给我们利用的Statement的办法。比方,鄙人面的代码段里,我们利用下面例子中的SQL语句作为executeUpdate的参数:

stmt.executeUpdate("CREATETABLECOFFEES"+
"(COF_NAMEVARCHAR(32),SUP_IDINTEGER,PRICEFLOAT,"+
"SALESINTEGER,TOTALINTEGER)");

  由于我们已把SQL语句赋给了createTableCoffees变量,我们能够以下体例誊写代码:

stmt.executeUpdate(createTableCoffees);

实行语句
  我们利用executeUpdate办法是由于在createTableCoffees中的SQL语句是DDL(数据界说言语)语句。创立表,改动表,删除表都是DDL语句的例子,要用executeUpdate办法来实行。你也能够从它的名字里看出,办法executeUpdate也被用于实行更新表SQL语句。实践上,相对创立表来讲,executeUpdate用于更新表的工夫更多,由于表只必要创立一次,但常常被更新。

  被利用最多的实行SQL语句的办法是executeQuery。这个办法被用来实行SELECT语句,它几近是利用最多的SQL语句。即刻你将看到怎样利用这个办法。

在表中输出数据
  我们已显现了怎样经由过程指定列名、数据范例来创立表COFFEES,可是这仅仅创建表的布局。表还没有任何数据。我们将次输出一行数据到表中,供应每列的信息,注重拔出的数据显现按次跟表创立时分是一样的,既缺省按次。

  以下代码拔出一个行数据,COF_NAME的值为Colombian,SUP_ID为101,PRICE为7.99,SALES0,TOTAL0。就象创立COFFEES表一样,我们创立一Statement对象,并实行executeUpdate办法。

  由于SQL语句一行显现不下,因而我们把它分为两行,并用加号(+)相连。出格要注重的是,在COFFEES和VALUES之间要有空格。这个空格必需在引号以内而且要在COFFEES跟VALUES之间;没有这个空格,SQL语句将被毛病地被读作为"INSERTINTOCOFFEESVALUES...",而且DBMS将寻觅表COFFEESVALUES。还要注重的是在coffeename上我们利用了单引号。

Statementstmt=con.createStatement();
stmt.executeUpdate(
"INSERTINTOCOFFEES"+
"VALUES(Colombian,101,7.99,0,0)");

  上面的代码把第二行拔出到表COFFEES中。我们能够在利用Statement对象而不必为每次实行创立一个新的。

stmt.executeUpdate("INSERTINTOCOFFEES"+
"VALUES(French_Roast,49,8.99,0,0)");

  剩下行的数据以下:

stmt.executeUpdate("INSERTINTOCOFFEES"+
"VALUES(Espresso,150,9.99,0,0)");
stmt.executeUpdate("INSERTINTOCOFFEES"+
"VALUES(Colombian_Decaf,101,8.99,0,0)");
stmt.executeUpdate("INSERTINTOCOFFEES"+
"VALUES(French_Roast_Decaf,49,9.99,0,0)");

从表中获得数据
  既然表COFFEES中已无数据了,我们就能够写一个SELECT语句来获得这些值。上面的SQL语句中星号(*)暗示选择一切的列。由于没有效WHERE子句来限定所选的行,因而上面的SQL语句选择的是全部表。

SELECT*FROMCOFFEES

  了局是全部表的数据,以下:

COF_NAMESUP_IDPRICESALESTOTAL
------------------------------------
Colombian1017.9900
French_Roast498.9900
Espresso1509.9900
Colombian_Decaf1018.9900
French_Roast_Decaf499.9900

  假如你间接在数据库体系里输出SQL查询语句,你将在你的终端上看到如上的了局。当我们经由过程一个Java使用程序存取一个数据库时,正如我们即刻要做的一样,我们必要检索了局以便我们能利用他们。你将鄙人一节看到怎样完成。

这是SELECT语句的另外一个例子,这将失掉咖啡及其各自每磅单价的列表。

SELECTCOF_NAME,PRICEFROMCOFFEES

查询的了局集将具有以下情势:

COF_NAMEPRICE
-----------------------
Colombian7.99
French_Roast8.99
Espresso9.99
Colombian_Decaf8.99
French_Roast_Decaf9.99

下面SELECT语句获得了一切咖啡的名字及代价。而上面的SELECT语句限定那些每磅代价低于$9.00的咖啡才被选择。
SELECTCOF_NAME,PRICE
FROMCOFFEES
WHEREPRICE<9.00

了局集将具有以下情势:

COF_NAMEPRICE
--------------------
Colombian7.99
French_Roast8.99
ColombianDecaf8.99


市场分额,java比asp高一点,因为C#是仿照java开发的,所以哦C#能做的java都能做到,但是java能做的,C#不一定都能做到。毕竟是抄袭吗。
作者: 活着的死人    时间: 2015-1-18 20:59
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
作者: 飘灵儿    时间: 2015-1-20 06:18
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
作者: 海妖    时间: 2015-1-23 13:01
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
作者: 变相怪杰    时间: 2015-1-25 23:56
多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
作者: 分手快乐    时间: 2015-2-4 13:06
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
作者: 简单生活    时间: 2015-2-9 09:02
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
作者: 蒙在股里    时间: 2015-2-9 22:41
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
作者: 柔情似水    时间: 2015-2-28 03:13
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
作者: 仓酷云    时间: 2015-3-7 18:05
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
作者: 只想知道    时间: 2015-3-9 05:25
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
作者: 小妖女    时间: 2015-3-16 20:46
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
作者: 山那边是海    时间: 2015-3-23 00:48
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2