《Java语言》课件java数据库

PPT
  • 阅读 40 次
  • 下载 0 次
  • 页数 58 页
  • 大小 365.000 KB
  • 2022-11-24 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
《Java语言》课件java数据库
可在后台配置第一页与第二页中间广告代码
《Java语言》课件java数据库
可在后台配置第二页与第三页中间广告代码
《Java语言》课件java数据库
可在后台配置第三页与第四页中间广告代码
《Java语言》课件java数据库
《Java语言》课件java数据库
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 58
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
文本内容

【文档说明】《Java语言》课件java数据库.ppt,共(58)页,365.000 KB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-45113.html

以下为本文档部分文字说明:

JAVA的数据库编程本讲重点:学习Java语言在数据库方面的应用;掌握关系数据库的概念;掌握常用的SQL语句;掌握JDBC的结构;掌握通过JDBC连接数据库的步骤。13-1:数据库简介什么是数据库?数据库是长期存储在计算机内的、有组织的、可共享的数据集合

。在当今的信息时代,数据库是无处不在。在许多计算机应用系统中,都要涉及到有关数据库的操作,其中相当一部分还是以数据库为核心来组织整个系统13-1:数据库简介1、关系型数据库2、SQL简介3、数据库应用模型(两层/三层结构)关系型数据库目前广泛使用的关系型数据库产品有:大型:Oracle

、Sybase、DB2和SQLSever等。小型:Access、VisualFoxPro等。什么是关系型数据库?关系型数据库中以表为单位组织数据,表是由行和列组成的二维表格。如表13-1所示。关系型数据库表9-1学生成绩表nonamesexresult200

41001张骞男675.5020041004李燕女730.0020041007王鹏男650.0020041010张华女690.00表有结构和记录两部分组成。表结构对应表头信息,包括列名(字段名)、数据类型和数据长度等信息。列也称为字段

。如表9-2所示。关系型数据库表9-2学生成绩表的表结构字段名数据类型字段宽度no文本8name文本8sex文本2result数字单精度型关系型数据库有上述两个表可以看出:记录是除结构外的各行数据。每一行称为一条记录。每一条记录中的各个选项对应于表中的一列。每一列数据都要符合所在列的

数据类型,如result列的数值只能为数值型数据,而不能为字符型数据。SQL简介什么是SQL?结构化查询语言SQL(StructuredQueryLanguage)是所有关系型数据库都支持的一种统一的数据库语言利用SQL语言可以非常方便的建立数据库表、查询数据库中的数据以及给数据库中

输入新数据、修改数据及删除数据等在Java中对数据库操作是通过SQL语言来实现的。常用的SQL语句-定义表语句定义表要建立表,首先需建立表结构。建立数据库中表结构的语句为:CREATETABLE表名(列名1数据类型1[条件1],列名2数据类型2[条件2],

┅)例如:建立学生成绩表students的表结构,我们可以使用如下的SQL语句:CREATTABLEstudents(nochar(8)notnull,namechar(6),sexchar(2),resultfloat)常用的SQL语句-定义表语句其中:表名:代表要建立的表名称;列名1

、列名2等:表示表中各列(字段)的名称。数据类型1、数据类型2:表示表中各个字段的数据类型。如char(6)表示存放6个字符的字符型数据。条件1、条件2:表示该列数据所满足的条件,如notnull表示非空。常用的SQL语句-查询语句利用SELECT语句从数据库

中查询信息,其句型如下:SELECT列名1,列名2,┅FROM表名1,表名2,┅[WHERE条件]SELECTno,name,sex,resultFROMstudentswheresex='男'如果要查询表中所有列的信息,可以

用“*”代替列名。例如:SELECT*FROMstudentswheresex='男'常用的SQL语句-插入语句利用INSERT语句向表中插入记录,INSERT语句的格式如下:INSERTINTO表名VALUES(列1值,列2值┅)例如:向表中插入一条记录:20041008、孙涛、男、585

.50我们可以使用如下的语句:INSERTINTOstudentsVALUES('20041008','孙涛','男',585.50)常用的SQL语句-删除语句要删除表中的一条或多条记录,可以使用DELETE语句,其格式如下

:DELETEFROM表名WHERE条件例如:删除表students中no值为20041004的记录,语句如下:DELETEFROMstudentsWHEREno='20041004'常用的SQL语句-修改语句要修改表中的记录,可以使用UPDATE语句,其格式如

下:UPDATE表名SET列名1=值1,列名2=值2,┅WHERE条件例如:要将students中,no为20041004职员的name改为王大伟,result改为701.00,其修改语句是什么?(试一试!!)常用的S

QL语句-删除语句使用DELETE语句可以删除满足条件的记录,其格式如下:DELETEFROM表名WHERE条件例如:删除表students中no值为20041004的记录,语句如下:DELETEFROMstudents

WHEREno='20041004„注意:DROPTABLE表名是删除整个表,而delete是删除表中的记录。返回3:数据库应用模型目前,大多数大型数据库应用系统多采用基于网络的Client/Sever两层

结构或Browser/Sever多层结构体系。这就将数据库系统的开发工作划分为Sever端开发和Client端开发。Sever端开发也称为后端开发。(自己看相关资料)Client端开发的主要任务是实现具有友好用户界面和完善的数据访问操作功能的应用程序。图15

-1Client端的用户界面两层结构:Client客户端Server端(DBMS)ODBC/JDBC图13-2两层结构三层结构:Client客户端中间服务器数据库服务器JDBCHTTP图13-3三层结构13-2使用JD

BC连接数据库1、JDBC简介2、JDBC运行机理13-2-1JDBC简介在Java程序中,连接数据库采用JDBC(JavaDatabaseConnectivity)技术,是由Sun公司提供的与平台无关的数据库连接标准。它将数据库访问封装在少数几个方法内,使用户可以极其方便的查询数据库、插入

新的数据、更改数据等。JDBC运行机理Java数据库应用程序JDBC驱动程序管理器JDBC/ODBC桥接器ODBC驱动程序DB供应商提供的JDBC驱动程序DBJDBCAPIJDBC驱动程序APISQL命令(SQLServer、Oracle)1

3-2-2JDBC驱动类型目前各大数据库厂商基本都提供JDBC驱动程序,使得Java程序能独立运行于各种数据库之上。JDBC-ODBC桥接驱动程序原生API结合Java驱动程序网络协议搭配完整的Java驱动程序原生协议搭配完整的Java驱动程序JDBC-ODBC桥接驱动程序JDB

C-ODBC桥驱动程序:Sun公司在Java2中免费提供了JDBC-ODBC桥接驱动程序,供存取标准的ODBC数据源。一般用来存取MicrosoftAccess数据库、VisualFoxPro数据

库等。此驱动程序适合于开发小规模的应用程序。在后面的例题中,我们将使用JDBC-ODBC桥驱动程序来连接Access2003数据库,详细介绍Java的数据库编程。13-3建立数据源数据源是连接数据库的接口,

要建立数据源,首先需要建立数据库。13-3-1建立数据库建立数据库建立表的结构输入记录13-3-2建立数据源13-4Java数据库编程DiverManager驱动程序管理器Connection(连接)Statement(语句)ResultSet(

结果集)JDBC驱动程序生成生成生成(数据库)表建立与数据库的连接执行SQL语句返回结果集13-4Java数据库编程13-4-1数据库编程的一般过程:加载JDBC驱动程序。连接数据库执行SQL处理结果集关

闭连接如何加载驱动程序为了与特定的数据源相连,即连接数据库,首先要加载JDBC驱动程序加载JDBC驱动程序方法之一:可以使用Class.forName()方法加载一个驱动程序。语句如下:Class.forName("JDBC驱动

程序名");要加载Sun公司提供的JDBC-ODBC桥驱动程序,使用如下的语句Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");如何加载驱动程序数据库驱动类名MySqlcom.mysql.jdbc.DriverMSSql

Server2000com.microsoft.jdbc.sqlserver.SQLServerDriverOracleoracle.jdbc.driver.OracleDriverDB2com.ibm.db2.jdbc.net.DB2DriverSybasecom.sybas

e.jdbc.SybDriverPointBasecom.pointbase.jdbc.jdbcDataSourceJDBC-ODBC桥sun.jdbc.odbc.JdbcOdbcDriver如何加载驱动程序加载JDB

C驱动程序方法之二直接调用DriverManager类的registerDriver()方法实现装载DriverManager.registerDriver(newcom.microsoft.jdbc.sqlserver.SQLServerDriver());返回如何连接数据库建立连接就是指与

数据源的连接,我们可以使用DriverManager类的getConnection()静态方法。使用的语句如下:Connectionconn=DriverManager.getConnection(Stri

ngurl,Stringuser,Stringpassword);其中:url:指指定的数据源。user:数据库的用户名。(对于小型数据库可以省略)password:数据库的密码。(对于小型数据库

可以省略)如何连接数据库例如:连接数据源myStuDB所代表的数据库:Connectionconn=DriverManager.getConnection(“jdbc:odbc:myStuDB”,“jav

a”,“1234”);(ACCESS数据库)也可以分开写,如Stringur1=“jdbc:MySQL://localhost/myDataBase”;Stringuser=“root”;Stringpassword=“111111”;

Connectioncon=DriverManager.getConnection(ur1,user,password);如何连接数据库数据库连接字符串MySqljdbc:mysql://localhost:3306/dbnameMSSqlServer2000jdbc:m

icrosoft:sqlserver://localhost:1433;databaseName=dbnameOraclejdbc:oracle:thin:@localhost:1521:tablespaceDB2jdbc:db2://

localhost:6789/dbnameSybasejdbc:sybase:Tds:localhost:5007/dbnamePointBasejdbc:pointbase://localhost:9092/dbnameJDBC-ODBC桥jdbc:odbc:dsnname如何连接数

据库连接对象的管理—Connection接口Connection接口负责管理Java应用程序和数据库之间的连接。一个Connection对象表示对一个特定的数据源已经建立了一条连接,它能够创建执行SQL的Statement语句对象,还能够提供数据库中的属性信息。表:Connection接口的

主要方法voidclose()throwsSQLException立即释放此Connection对象的数据库和JDBC资源,而不是等待它们被自动释放。booleanisClosed()返回此Connec

tion对象是否已经被关闭。StatementcreateStatement()throwsSQLException创建一个Statement对象来将SQL语句发送到数据库。StatementcreateStatement(intresultSetType,intres

ultSetConcurrency)throwsSQLException创建一个Statement对象,该对象将生成具有给定类型和并发性的ResultSet对象。throwsSQLException获取D

atabaseMetaData对象,该对象包含关于Connection对象连接到的数据库的元数据。如何连接数据库获得数据库元数据接口—DatabaseMetaData接口•DatabaseMetaData接口管理通

过Connection对象连接的数据库的属性信息(称为元数据),包括基本表描述、所支持的SQL语法、存储过程、基于连接所能进行的操作等。•DatabaseMetaData对象由Connection对象的getMetaD

ata()方法返回。表:DatabaseMetaData接口主要方法方法名称功能StringgetURL()throwsSQLException返回连接数据库的URL。StringgetUserName()throwsSQLException返回数据库的用户名。Stri

nggetDatabaseProductName()throwsSQLException返回数据库名称。StringgetDriverName()throwsSQLException返回此JDBC驱动程序的名称。StringgetDriverVersio

n()throwsSQLException返回JDBC驱动程序版本例7-1连接指定数据库并获得数据库属性1.importjava.sql.*;2.publicclassDatabaseMeta{3.privateCo

nnectionconn=null;4./**CreatesanewinstanceofDatabaseMeta*/5.publicDatabaseMeta(){6.}7.//构造方法,参数分别指定JDBC驱动程序、数据库URL、用户名和密码8.publicDatabaseMeta(Stri

ngdriver,Stringurl,Stringuser,Stringpwd)throwsClassNotFoundException,SQLException{9.Class.forName(driver);10.this.conn=DriverManager.getConnection(ur

l,user,pwd);11.}12.publicStringgetDBAbout()throwsSQLException{//返回所连接数据库的属性信息13.Stringmessage="";14.DatabaseMetaDatadbmd=con

n.getMetaData();15.message="JDBC驱动程序:"+dbmd.getDriverName()+""+dbmd.getDriverVersion()+"\r\n"+16."JDBCURL:"+dbmd.getURL()+"\r\n"+17."数据库:"+dbmd.get

DatabaseProductName()+"\r\n"+18."数据库版本:"+dbmd.getDatabaseProductVersion()+"\r\n"+19."用户名:"+dbmd.getUserName()

+"\r\n";20.returnmessage;21.}22.publicstaticvoidmain(String[]args){23.Stringdriver="com.microsoft.jdbc.sqlserver.SQLSer

verDriver";24.Stringurl="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=javatest";25.Stringuser="sa";26.Stringpwd=

"720309";27.try{28.DatabaseMetadm=newDatabaseMeta(driver,url,user,pwd);29.System.out.println(dm.getDBAbout());30.}catch(SQLExceptionex

){31.ex.printStackTrace();32.}catch(ClassNotFoundExceptionex){33.ex.printStackTrace();34.}35.}36.}返回如何执行SQL对数据库连接成功后,就可以对数据库进行查询

、更新、修改、删除、添加数据了,这些操作都需要通过SQL语句来实现。在执行SQL语句之前,首先需要创建Statement对象。建立一个Statement对象,使用的语句如下:StatementSQL语句变量=连接变量.createStatement();例如:建立SQL语句变量s

tmt:Statementstmt=conn.createStatement();在Java程序中执行SQLResultSetrs=stmt.executeQuery("SELECT查询SQL语句");stmt.executeUpdate("UPDATE修改SQL语句");stmt.execut

eUpdate("INSERTINTO插入SQL语句");stmt.executeUpdate("DELETEFROM删除SQL语句");stmt.executeUpdate("CREATETABLE创建表SQL语

句");stmt.executeUpdate("DROPTABLE删除表SQL语句");表:Statement接口主要方法方法名称功能booleanexecute(Stringsql)throwsSQLExceptio

n执行给定的SQL语句ResultSetexecuteQuery(Stringsql)throwsSQLException执行数据查询SQL语句,返回单个ResultSet对象intexecuteUpdat

e(Stringsql)throwsSQLException执行给定SQL语句,该语句可能为INSERT、UPDATE或DELETE语句,或者不返回任何内容的SQL语句。intgetUpdateCount()throwsSQLExcepti

on获得数据更新所影响行数ResultSetgetResultSet()throwsSQLException获得数据查询结果集Voidclose()throwsSQLException关闭语句例7-2Statement接口的使用1.importjava.sql.Connecti

on;2.importjava.sql.DriverManager;3.importjava.sql.Statement;4.importjava.sql.ResultSet;5.importjava.sql.ResultSetMetaData;6.importjava.sql.SQLEx

ception;7.publicclassConnSqlDemo{8.publicstaticvoidmain(String[]args){9.try{10.Connectionconn=null;11.Class.forName("com.microsoft.jdbc.sqlse

rver.SQLServerDriver");//指定JDBC驱动程序类型12.Stringurl="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=javadbase";13.Stringuser="sa";1

4.Stringpassword="720309";15.conn=DriverManager.getConnection(url,user,password);//建立与SQL数据库的连接16.Stringquery="selec

t*fromstudentinfo";17.Statementst=18.conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);1

9.//生成可滚动且不受其他更新影响的、可更新的结果集。20.ResultSetrs=st.executeQuery(query);21.ResultSetMetaDatarsData=rs.getMetaData();//getMetaD

ata(),检索此ResultSet对象的列的编号、类型和属性。22.intcolumnCount=rsData.getColumnCount();23.for(inti=1;i<=columnCount;i++){24.System.out.print("第"+i+"列:"+rsDat

a.getColumnName(i));25.System.out.println("数据类型:"+rsData.getColumnTypeName(i));26.}27.rs.first();//将指针移动到此ResultSet对象的第一行28.System.out.

println("第一行---"+rs.getString(1)+rs.getString(2));29.rs.last();30.System.out.println("最后一行---"+rs.getString(1)+rs.getString(2));31.rs.absolute(3);

32.rs.updateString(2,"18");//用String值更新指定列。更新方法用于更新当前行或插入行中的列值,并不会更新底层数据库33.rs.updateRow();//用此ResultSet对象的当前行的新内容更新底层数据库34.System.out.println("第三

行---"+rs.getString(1)+rs.getString(2));35.rs.absolute(4);36.rs.updateString(2,"16");37.System.out.printl

n("第四行---"+rs.getString(1)+rs.getString(2));38.rs.updateRow();39.st.close();40.conn.close();41.}catch(Cl

assNotFoundExceptione){42.e.printStackTrace();43.}catch(SQLExceptione){44.e.printStackTrace();45.}46.}47.}返回如何处理结果集

处理数据查询结果集--ResultSet接口ResultSet接口存储结果集当前行intgetRow()throwsSQLException;//获得当前行位置booleannext()throwsSQLException;//设置当前行的后一行成为新的

当前行获得当前行指定列的数据项值ObjectgetObject(intcolumnIndex)throwsSQLException;ObjectgetObject(StringcolumnName)throwsSQLException;StringgetString(intcolum

nIndex)throwsSQLException;StringgetString(StringcolumnName)throwsSQLException;例如,while(resultset.next())System.out.println(resultset.

getString(1));//获得当前行指定列的值如何处理结果集例如,可用下面的程序段对学生成绩表的姓名和出生日期进行访问:ResultSetrs=st.executeQuery("select姓名,出

生日期from学生成绩");while(rs.next()){System.out.println(rs.getString("姓名")//用字段(列)名+""+rs.getString(2).substring(0,10));//用字段(列)序号,//而且将日

期类型的字段转换为String类型进行显示。}返回关闭连接:对数据库的操作完成之后,需要关闭与数据库的连接,使用close()方法。其格式如下:连接变量.close();如:conn.close();如果对结果集rs进行了操作,还需要关闭结果集。即:rs.close();一般是关闭

结果集(ResultSet)、关闭数据库访问对象(Statement)和关闭连接(Connection)。返回13-4-2数据库编程综合实例Java程序在MySQL数据库中创建表student,并向其中输入数据。该程序运行后将在MySQ

L数据库服务器Test数据库中创建表student,同时利用程序实现5条记录的录入,程序运行结果如下图所示。实现代码首先在Eclipse资源管理窗口中创建项目ConnectMySql,在该目录下创建文件夹Validate,在该目录下创建ConnectToMySql

Test.Java文件,输入源代码。packagevalidate;importjava.sql.*;publicclassDataBaseTest{publicstaticConnectiongetConnection()throwsSQLException,java.lang

.ClassNotFoundException{Stringurl="jdbc:mysql://localhost:3306/test";//取得连接的urlClass.forName("com.mysql.jdbc.Driver");//加载MySQL

的jdbc驱动StringuserName="root";//使用能访问MySQL数据库的用户名rootStringpassword="mysql";//使用口令Connectioncon=DriverManager.getConnection(url,userNa

me,password);//打开数据库连接returncon;}实现代码publicstaticvoidmain(Stringargs[]){try{Connectioncon=getConnection();//取得数据库的连接Statementsql=con.createStateme

nt();//创建一个声明,用来执行sql语句sql.executeUpdate("droptableifexistsGoods");//如存在同名数据库则删除sql.executeUpdate("createtab

legoods(bmbhintnotnullauto_increment,bmmcvarchar(30)notnulldefault'bmmc',bmyjintnotnulldefault60,pri

marykey(bmbh));");//向表中插入数据sql.executeUpdate("insertgoodsvalues(1001,'服装一部',842511)");sql.executeUpdate("insertgoodsvalues(1002,'服装二部',796519)");sql.

executeUpdate("insertgoodsvalues(1003,'电器一部',328923)");sql.executeUpdate("insertgoodsvalues(1004,'电器二部',977666)");sq

l.executeUpdate("insertgoodsvalues(1005,'日用品部',765348)");Stringquery="select*fromGoods";//执行查询数据库的sql语句ResultSetresult=sql.e

xecuteQuery(query);//返回一个结果集实现代码System.out.println("Goods表中的数据如下:");System.out.println("部门编号"+""+"部门名称"+""+"部门业绩");while(result.next()){intnumb

er=result.getInt("bmbh");//取得数据库中的数据Stringname=result.getString("bmmc");//取得数据库中的数据StringjavaScore=result.

getString("bmyj");//取得数据库中的数据System.out.println("------------------------");System.out.println(""+number+""+name

+""+javaScore);}System.out.println("------------------------");sql.close();con.close();//关闭声明和连接}catch(java.lang.

ClassNotFoundExceptione){//异常处理System.err.print("ClassNotFoundException:");System.err.println(e.getMessage());}catch(SQLExc

eptionex){System.err.println("SQLException:"+ex.getMessage());//显示数据库连接错误或者查询错误}}}总结:关系型数据库SQL语句数据库应用模型JDBC结构数据库编程的步骤基于MySQL数据库应用系统的开发☻【综合案例8-

2】Java应用程序连接MySQL数据库进行用户身份验证Java应用程序连接MySQL数据库进行用户身份验证运行后出现如图1所示的“用户身份验证”窗口;输入信息后单击“登录”按钮,程序将开始连接数据库,并执行身份验证业务逻

辑。身份验证通过后将弹出如图2对话框,提示登陆成功,否则弹出如图3所示,说明非法登陆。单击退出按钮,将退出用户身份验证窗口。图1图2图3实现代码首先在Eclipse中建立一个名为“ConnectMy

Sql”的新项目,在项目里创建一个名为UserLogin的类,向类中加入如下代码。packagevalidate;importjava.awt.*;importjava.awt.event.*;importjava.sql.*;importjavax.swing.*;publ

icclassUserLoginextendsJFrameimplementsActionListener{JPanelpanel1=newJPanel();JLabellabel=newJLabel("请输入用户名:");JLabellab

e3=newJLabel();JTextFielduserName=newJTextField("");//输入用户名的文本框JLabellabe2=newJLabel("请输入密码:");JPasswordFieldu

serPassword=newJPasswordField("");//输入密码的密码框JButtonbutton1=newJButton("登录");JButtonbutton2=newJButton("退出");实现代码publicUserLogin(){super("用户身份验证");//

调用父类构造方法button1.addActionListener(this);//为button1注册事件监听器this.getContentPane().setLayout(newFlowLayout(FlowLayout.CENTER));//定义程序

窗口布局panel1.setLayout(newGridLayout(5,1,4,4));//定义面板布局this.getContentPane();add(panel1);panel1.add(label);panel1.add(userName);panel

1.add(labe2);panel1.add(userPassword);panel1.add(button1);panel1.add(button2);panel1.add(labe3);button

2.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){dispose();}});//button2为定义事件监听对象this.addWindowListener(newWindowAdap

ter(){publicvoidwindowClosing(WindowEvente){System.exit(0);}});setSize(300,150);setVisible(true);}实现

代码publicvoidactionPerformed(ActionEvente){try{Class.forName("org.gjt.mm.mysql.Driver");//MySQL数据库驱动程序加载StringstrCon="j

dbc:mysql://localhost/test";Connectionconn=DriverManager.getConnection(strCon,"root","mysql");Statements

tmt=conn.createStatement();//执行查询数据库的SQL语句Stringsql="select*fromaccountwhereusername='"+userName.getText()+"'";sql+="anduserPa

ssword='"+userPassword.getText()+"'";//SQL查询语句ResultSetrs=stmt.executeQuery(sql);//返回一个结果集if(rs.next())labe3.setText("欢迎您登陆本系统

");//身份验证通过elselabe3.setText("非法用户");}//身份验证没有通过catch(finalExceptionex){ex.printStackTrace();}}publicstaticvoidmain(

finalString[]args){newUserLogin();}}

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?