仓酷云

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

[学习教程] JAVA网站制作之JDBC 进门(三)

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

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

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

x
windows系统样,他们做了什么事或者留了一些后门程序,谁都不知道,二,java开发是跨平台,任何系统上都可以运行,对于保密型系统和大型系统开发这是必要的创立表
  起首,我们在我们的示例数据库创立个中一张表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


j2EE和asp比较,其实也没什么比的,原因和我上面说那些比较差不了多少,也是稳定性,安全性,J2EE比asp高,速度上比不过asp,asp也是延续着它的拖拽控件的方法,提高速度。
admin 该用户已被删除
沙发
发表于 2015-1-20 19:52:09 | 只看该作者
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
再见西城 该用户已被删除
板凳
发表于 2015-1-29 18:47:33 | 只看该作者
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
莫相离 该用户已被删除
地板
发表于 2015-2-6 03:16:09 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
灵魂腐蚀 该用户已被删除
5#
发表于 2015-2-15 08:43:55 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
再现理想 该用户已被删除
6#
发表于 2015-2-27 04:51:34 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
深爱那片海 该用户已被删除
7#
发表于 2015-3-1 20:57:40 | 只看该作者
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
活着的死人 该用户已被删除
8#
发表于 2015-3-3 06:31:54 | 只看该作者
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
变相怪杰 该用户已被删除
9#
发表于 2015-3-5 06:42:50 | 只看该作者
Java 编程语言的风格十分接近C、C++语言。
柔情似水 该用户已被删除
10#
发表于 2015-3-7 03:55:37 | 只看该作者
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
若天明 该用户已被删除
11#
发表于 2015-3-7 05:28:24 | 只看该作者
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
山那边是海 该用户已被删除
12#
发表于 2015-3-14 10:50:55 | 只看该作者
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
冷月葬花魂 该用户已被删除
13#
发表于 2015-3-21 03:47:50 | 只看该作者
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-14 22:31

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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