您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > 韩顺平j2ee-JDBC与MySQL学习笔记
1/76jdbc详解+学生选课项目jdbc简介数据库驱动sun公司为统一对数据库的操作,定义一套java操作数据库的规范(接口+类),称之为jdbc。jdbc接口和类主要是放在java.sql包和javax.sql包。JDBC全称为:JavaDatabaseConnectivity(java数据库连接),它主要由接口组成。组成JDBC的2个包:java.sql和javax.sql开发JDBC应用需要以上2个包的支持外,还需要导入相应JDBC的数据库实现(即数据库驱动)。做jdbc开发的几个前提1、引包importjava.sql.*;importjavax.sql.*;2、把数据库驱动包jar包导入到java项目中,使用不同的数据库时要使用对应数据库版本的驱动。这些驱动可以到相应数据库提供商的官方网站下载。第一个JDBC程序编写一个程序,这个程序从user1表中读取数据,并打印在命令行窗口中。一、搭建实验环境:1、在oracle中创建一个库,并创建user1表和插入表的数据。user1表结构如下:idnumber主键自增长namevarchar2(30)passwdvarchar2(50)emailvarchar2(100)birthdaydateagenumber(3)oracle下先建序列createsequenceuser1_seqstartwith1incrementby12/76minvalue1nomaxvaluenocachenocycle;建user1表createtableuser1(idnumberprimarykey,namevarchar2(30),passwdvarchar2(50),emailvarchar2(100),birthdaydate,agenumber(3));2、新建一个java工程,并导入数据驱动。二、编写程序,在程序中加载数据库驱动DriverManager.registerDriver(Driverdriver);Class.forName(oracle.jdbc.driver.OracleDriver);程序详解--DriverManagerJdbc程序中的DriverManager用于加载驱动,并创建与数据库的链接,这个类的常用方法:DriverManager.registerDriver(newOracleDriver())注意:在实际开发中,并不推荐采用这个方法注册驱动。查看Driver的源代码可以看到,如果采用此种方式,会导致驱动程序加载两次,也就是在内存中会有两个Driver对象。推荐方式:Class.forName(oracle.jdbc.driver.OracleDriver);采用此种方式不会导致驱动对象在内存中重复出现,并且采用此种方式,程序仅仅只需要一个字符串,不需要import驱动的API,这样可使程序不依赖具体的驱动,使程序的灵活性更高。DriverManager.getConnection(url,user,password),根据url获取数据库的链接。三、建立连接(Connection)Connectionconn=DriverManager.getConnection(url,user,pass);数据库URLURL用于标识数据库的位置,程序员通过URL地址告诉JDBC程序连接哪个数据库,URL的写法为:3/76常用数据库URL地址的写法:Oracle--jdbc:oracle:thin:@localhost:1521:sidSqlserver--jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=sidMySql--jdbc:mysql://localhost:3306/sid程序详解--Connection接口Jdbc程序中的Connection,它用于代表数据库的链接,Connection是数据库编程中最重要的一个对象,客户端与数据库所有交互都是通过Connection对象完成的,这个对象的常用方法:createStatement():创建向数据库发送sql的statement对象。prepareStatement(sql):创建向数据库发送预编译sql的PrepareSatement对象。prepareCall(sql):创建执行存储过程的callableStatement对象。setAutoCommit(booleanautoCommit):设置事务是否自动提交。commit():在链接上提交事务。rollback():在链接上回滚事务。System.out.println(接口引用的某个类实例);将输出该类的全名@十六机制的hash值,该方法常用于查看某个接口引用指向的真正对象实例的类型是什么!Connection接口连接不同的数据库,返回的对象实例类型是不同的。对Connection中的事务提交示例详解:setAutoCommit,commit(),rollback()的使用packagecom.oracle.jdbc.test;importjava.sql.*;publicclassTestJdbcAutoCommit{//使用jdbc去操作oracle数据库--事务处理setAutoCommitpublicstaticvoidmain(String[]args){Connectionct=null;Statementstatement=null;Stringurl=jdbc:oracle:thin:@127.0.0.1:1521:orcl;Stringusername=scott;Stringpassword=tiger;//1、加载驱动try{Class.forName(oracle.jdbc.driver.OracleDriver);//2、得到连接ct=DriverManager.getConnection(url,username,password);//把事务设为不自动提交ct.setAutoCommit(false);//3、创建sql对象(Statement/PreparedStatement/CallableStatement)statement=ct.createStatement();//4、通过statement向数据库发出sql指令//需求:对emp表进行操作,把SMITH的sal-10给KING的sal+10statement.executeUpdate(updateempsetsal=sal-10where4/76ename='SMITH');statement.executeUpdate(updateempsetsal=sal+10whereename='KING');//提交所有语句ct.commit();}catch(Exceptione){//如果事务中的sql语句中有任何错误则进行回滚操作。try{ct.rollback();}catch(SQLExceptione1){e1.printStackTrace();}e.printStackTrace();}finally{//关闭资源[先开后关,后开先关]if(statement!=null){try{statement.close();}catch(SQLExceptione){e.printStackTrace();}statement=null;}if(ct!=null){try{ct.close();}catch(SQLExceptione){e.printStackTrace();}ct=null;}}}}四、创建用于向数据库发送SQL的Statement对象,并发送SQLStatementst=conn.createStatement();ResultSetrs=st.excuteQuery(sql);程序详解--ResultSetJdbc程序中的ResultSet用于代表sql语句的执行结果。ResultSet封装执行结果时,采用类似于表格的方式。ResultSet对象维护了一个指向表格数据行的游标,初始的时候,游标在第一行之前,调用ResultSet.next()方法,可以使游标指向具体的数据行,进行调用方法获取该行的数据。5/76ResultSet既然用于封装执行结果的,所以该对象提供的都是用于获取数据的get方法。获取任意类型的数据getObject(intindex)getObject(stringcolumnName)获取指定类型的数据,如:getString(intindex)getString(StringcolumnName)提问:数据库中列的类型是varchar2,获取该列的数据调用什么方法?int类型呢?bigint类型呢?boolean类型?答:获取varchar2类型的列数据,会调用getString方法。常用数据类型转换表(oracle)SQL类型jdbc对应方法返回类型numbergetBoolean()booleannumbergetByte()bytenumbergetShort()shortnumbergetInt()intnumbergetLong()longchar,nvarchar2,varchar2getString()StringText(clob)BlobgetClobgetBlob()ClobBlobDATEgetDate()java.sql.DateTIMESTAMPgetTimestamp()java.sql.TimestampnumbergetFloat()floatnumbergetDouble()double常用数据类型转换表(sqlserver)编号SQLServer数据库类型JDBC类型1intjava.lang.Integer2varcharjava.lang.String3charjava.lang.String4ncharjava.lang.String5nvarcharjava.lang.String6textjava.lang.String7ntextjava.lang.String8tinyintjava.lang.Integer9intjava.lang.Integer10tinyintjava.lang.Integer11smallintjava.lang.Integer12bitjava.lang.Boolean13bigintjava.lang.Long6/7614floatjava.lang.Double15decimaljava.math.BigDecimal16moneyjava.math.BigDecimal17smallmoneyjava.math.BigDecimal18numericjava.math.BigDecimal19realjava.lang.Float20uniqueidentifierjava.lang.String21smalldatetimejava.sql.Timestamp22datetimejava.sql.Timestamp23timestampbyte[]24binarybyte[]25varbinarybyte[]26imagebyte[]27sql_variantjava.lang.String常用数据类型转换表(MySql)类型名称显示长度数据库类型JAVA类型VARCHARL+NVARCHARjava.lang.StringCHARNCHARjava.lang.StringBLOBL+NBLOBjava.lang.byte[]TEXT65535VARCHARjava.lang.StringINTEGER4INTEGERUNSIGNEDjava.lang.LongTINYINT3TINYINTUNSIGNEDjava.lang.IntegerSMALLINT5SMALLINTUNSIGNEDjava.lang.IntegerM
本文标题:韩顺平j2ee-JDBC与MySQL学习笔记
链接地址:https://www.777doc.com/doc-4877222 .html