试验三Java数据库高级编程范文.docx
- 文档编号:4769691
- 上传时间:2022-12-08
- 格式:DOCX
- 页数:10
- 大小:23.51KB
试验三Java数据库高级编程范文.docx
《试验三Java数据库高级编程范文.docx》由会员分享,可在线阅读,更多相关《试验三Java数据库高级编程范文.docx(10页珍藏版)》请在冰豆网上搜索。
试验三Java数据库高级编程范文
试验三Java数据库高级编程
§3.1试验指导
一、JDBC访问MySql基本步骤
1、加载驱动程序。
驱动文件为mysql-connector-java-3.1.10-bin.jar
Stringdriver="com.mysql.jdbc.Driver";
Class.forName(driver);
2、建立连接对象Connection
Connectioncon=DriverManager.getConnection(url,user,pwd);
Stringurl="jdbc:
mysql:
//127.0.0.1:
3306/数据库名";
Stringuser="root",pwd="1234";
3、创建一个命令对象Statement
Statementcmd=con.createStatement();
1)、执行select语句,返回ResultSet
Stringsql="select*fromcustomers";
ResultSetrs=cmd.executeQuery(sql);
while(rs.next()){
Stringcid=rs.getString
(1);
Stringcname=rs.getString
(2);
intage=rs.getInt(3);
...
}
2)、执行insert,update,delete等操作.
Stringsql="deletefromcustomerswherecid='1001'";
introwcount=cmd.executeUpdate(sql);
4、关闭一些对象
con.close();
完整示例:
importjava.sql.*;
publicclassDemo{
publicstaticvoidmain(String[]args)throwsException{
Stringdriver="com.mysql.jdbc.Driver";
Class.forName(driver);
Stringurl="jdbc:
mysql:
//127.0.0.1:
3306/数据库名";
Connectioncon=DriverManager.getConnection(url,"zhouping","1234");
Statementcmd=con.createStatement();
ResultSetrs=cmd.executeQuery("select*fromcustomers");
while(rs.next()){
System.out.printf("%-10s%-30s%-10s\n",
rs.getString
(1),rs.getString
(2),rs.getString(3));
}
con.close();
}
}
二、带参数的Sql语句?
代表参数
Stringsql="insertintocustomers(id,name,phone)values(?
?
?
)";
PreparedStatementcmd=con.prepareStatement(sql);
cmd.setString(1,"1003");//为第一个参数赋值为1003
cmd.setString(2,"zhou");//为第二个参数赋值为zhou
cmd.setString(3,"021-");//为第三个参数赋值为1003
cmd.executeUpdate();
三、讨论ResultSet
ResultSet是一个游标,每次只能指向某一行,通过游标可以取
当前行的列值。
游标可以移动指向不同行。
1、创建支持滚动游标
Statementcmd=con.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
ResultSetrs=cmd.executeQuery(sql);
rs.first();//移到第一行
rs.last();//移到最后行
rs.next();//移到下一行
rs.previous();//移到上一行
rs.absolute(4);//移到第4行
rs.relative
(2);//在当前行的位置向下2行,如果是负数则向上移动指定行数
2、创建支持更新的游标
Statementcmd=con.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
1)删除当前行
rs.deleteRow();
2)更新当前行
rs.first();//移到第一行
rs.updateString(2,"zhangsan");//更新第2列
rs.updateRow();//刷新到数据库
四、数据库分层设计
1、编写一个操作数据库的基本类
importjava.sql.*;
publicclassDBHelper{
/*定义driver,url,user,pwd等*/
privatestaticStringdriver="com.mysql.jdbc.Driver";
privatestaticStringurl="jdbc:
mysql:
//127.0.0.1:
3306/mydb";
privatestaticStringuser="root",pwd="1234";
privatestaticConnectioncon;
/*加载驱动程序*/
static{
try{
Class.forName(driver);
}catch(Exceptionex){
ex.printStackTrace();
}
}
/*执行增删改操作*/
publicstaticvoidexecuteUpdate(Stringsql){
try{
con=DriverManager.getConnection(url,user,pwd);
Statementcmd=con.createStatement();
cmd.executeUpdate(sql);
con.close();
}catch(Exceptionex){
ex.printStackTrace();
}
}
/*执行查询操作*/
publicstaticResultSetexecuteQuery(Stringsql){
ResultSetrs=null;
try{
con=DriverManager.getConnection(url,user,pwd);
Statementcmd=con.createStatement();
rs=cmd.executeQuery(sql);
}catch(Exceptionex){
ex.printStackTrace();
}
returnrs;
}
/*执行关闭数据库连接操作*/
publicstaticvoidcloseConnection(){
try{
if(!
con.isClosed())
con.close();
}catch(Exceptionex){
}
}
}
2、定义类Customer映射数据库表Customers
表个结构如下:
createdatabasemydb;
usemydb;
Createtablecustomers(
cusidintnotnullprimarykey,
cusnamevarchar(20),
cusphonevarchar(20)
);
insertintocustomersvalues(100,'zhou','021-');
insertintocustomersvalues(101,'zhang','021-');
insertintocustomersvalues(102,'zhao','021-');
insertintocustomersvalues(103,'lou','021-');
insertintocustomersvalues(104,'hou','021-');
类Customer
classCustomer{
privateintcusid;
privateStringcusname,cusphone;
/*编写构造函数与set,get方法*/
}
3、编写顾客表操作类DAO
packagezhou;
importjava.sql.*;
importjava.util.*;
publicclassCustomerDao{
publicArrayList
ArrayList
Stringsql="select*fromcustomers";
ResultSetrs=DBHelper.executeQuery(sql);
try{
while(rs.next()){
Customercus=newCustomer();
cus.setCusid(rs.getInt
(1));
cus.setCusname(rs.getString
(2));
cus.setCusphone(rs.getString(3));
list.add(cus);
}
}catch(Exceptionex){
ex.printStackTrace();
}
DBHelper.closeConnection();
returnlist;
}
publicvoiddeleteCustomerByID(intid){
Stringsql="deletefromcustomerswherecustomerid="+id;
DBHelper.executeUpdate(sql);
}
publicvoidaddCustomer(Customercus){
Stringsql="insertintocustomersvalues("+cus.getCusid()+",'"+cus.getCusname()+"','"+cus.getCusphone()+"')";
DBHelper.executeUpdate(sql);
}
}
4、编写客户端
packagezhou;
importjava.io.*;
importjava.util.*;
publicclassDemo{
publicstaticvoidmain(String[]args)throwsException{
CustomerDaodao=newCustomerDao();
/*增加一个顾客*/
Customercus1=newCustomer();
cus1.setCusid(1010);
cus1.setCusname("zhangsan");
cus1.setCusphone("010-11111");
dao.addCustomer(cus1);
/*查询所有顾客*/
ArrayList
for(inti=0;i Customercus=list.get(i); System.out.println(cus.getCusid()+""+ cus.getCusname()+""+cus.getCusphone()); } /*通过编号删除顾客*/ dao.deleteCustomerByID(1010); } } §3.2实践题目 1、调试上面实验指导部分“四、数据库分层设计”部分代码 2、运用上面数据库设计思想,继续完成上次实验。 以JDBC技术创建一个通讯录应用程序,要求通讯录中必须含有编号、姓名,性别、电话、地址、Email等等。 实现该类并包含添加、删除、修改、按姓名查等几个方法。 编写主程序测试。 参考如下: 第一步: 编写一个Person联系人类 publicclassPerson{ privateintpid;//编号 privateStringname;//姓名 privateStringsex;//性别 privateStringtel;//电话 privateStringaddress;//地址 privateStringemail;//email /*构造函数以及set-get函数*/ } 第二步: 编写一个PersonDao封装对联系人类的有关操作 publicclassPersonDao{ //添加联系人 publicvoidaddPerson(Personp){ Stringsql=””; DBHelper.executeUpdate(sql); } //通过人的编号删除联系人 publicvoiddeletePersonByID(intpid){ Stringsql=”deletefrompersonwherepid=”+pid; DBHelper.executeUpdate(sql); } //通过人的姓名查找联系人,返回一个集合 publicList …. } //...其余方法 } 第三步: 编写一个测试Swing类,有界面使用JTable显示,参考书本上关于JTable控件的使用,参考界面如下 publicclassTestFrmextendsJFrame{ } 3、在数据库中建立一个表,表名为学生,其结构为: 学号、姓名、性别、年龄、成绩。 编程实现以下功能: ✓编写方法向学生表中增加记录。 ✓编写方法将每条记录按成绩由大到小的顺序显示到界面 ✓编写方法删除成绩不及格的学生记录。 注意: ✓本题可以使用Oracle数据库。 ✓采用分层数据库设计的思想。 编程步骤参考 第一步、创建数据库中的表 Student( intid, namevarchar(20), …… ) 第二步、编写一个Student类 publicclassStudent{ privateintid; privateStringname; } 第三步、构造一个该表的操作类StudentDao相关的业务逻辑 classStudentDao{ /*增加一个Student*/ publicvoidaddStudent(Studentst){ } /*查询系统中所有的Student,返回的是包含有Student持久对象的List。 */ publicListgetAllStudent(){ } /*删除给定ID的Student*/ publicvoiddeleteStudent(Stringid){ } /*按Student的名字进行模糊查找,返回是包含有Student持久对象的List*/ publicListgetSomeStudent(Stringname){ } 第四步、编写用户界面调用该StudentDao 说明: 本次实验浓缩了很多数据库设计的重要设计思想。 希望大家编写程序时认真体会,理解为什么这样做? 做完后要认真总结。 数据库编程是各门语言的核心内容其运用到业务各个方面。 参考: 连接字符串 1、连接Oracle Stringdriver="oracle.jdbc.driver.OracleDriver"; StringstrUrl="jdbc: oracle: thin: @127.0.0.1: 1521: MYORA";//127.0.0.1为数据库所在的机器IP,1521是端口号MYORA是Oracle运行的实例名 Class.forName(driver); Connectioncon=DriverManager.getConnection(strUrl,"user","password");
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 试验 Java 数据库 高级 编程 范文