Java数据库操作的一些注意
2024-09-05 07:00:21
练习一:插入一个学生的四六级成绩:
//课后练习
public class task3 { //添加一条数据
@Test
public void testInsert()
{
int id=1;
Scanner scanner =new Scanner(System.in);
System.out.println("四季/六级");
int type=scanner.nextInt(); System.out.println("身份证号");
String idCard = scanner.next();
System.out.println("准考证号");
String examCard=scanner.next(); System.out.println("学生姓名:");
String name=scanner.next(); System.out.println("学生成绩:");
int grade=scanner.nextInt(); String sql="insert into examstudent(flowId,type,idCard,examCard,name,Grade)values(?,?,?,?,?,?)"; //
int insertCount=update(sql,id++,type,idCard,examCard,name,grade); //根据返回值判断是否插入成功
if(insertCount>0)
{
System.out.println("插入成功");
}
else{
System.out.println("插入失败");
}
} //插入数据函数
public int update(String sql,Object ...args)
{
Connection conn=null;
PreparedStatement ps=null;
try {
conn=JDBCUtils.getConnction5(); ps=(PreparedStatement) conn.prepareStatement(sql);
for(int i=0;i<args.length;i++){
ps.setObject(i+1, args[i]);
} return ps.executeUpdate(); //返回影响了多少条数据
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
JDBCUtils.closeResource(conn, ps);
} return 0;
}
}
作业二:四六级成绩查询
@Test
public void queryWithId()
{
System.out.println("请选择您要输入的类型:");
System.out.println("a.准考证号");
System.out.println("b.身份证号");
Scanner scanner=new Scanner(System.in);
String slection =scanner.next();
if("a".equalsIgnoreCase(slection))
{
System.out.println("请输入注考证号:");
String examCard=scanner.next(); String sql="select flowId flowId,idCard IDCard,examCard examCard,name name,Grade grade from examstudent where examCard=?"; //为每个字段取别名,别名需要和Student对象中的数据类型一致
Student student=getInstance(Student.class, sql, examCard);
System.out.println(student); }else if("b".equalsIgnoreCase(slection))
{
System.out.println("请输入身份证号:");
String Idcard=scanner.next(); String sql="select flowId flowId,idCard IDCard,examCard examCard,name name,Grade grade from examstudent where examCard=?";
Student student=getInstance(Student.class, sql, Idcard); //调用通用查询接口
System.out.println(student);
}
else
{
System.out.println("您输入的数据有误,请重新输入!");
} } //通用查询的函数
public <T> T getInstance(Class<T> clazz,String sql,Object ...args){ Connection conn =null;
PreparedStatement ps=null;
ResultSet rs=null; try {
conn=JDBCUtils.getConnction5();
ps=(PreparedStatement) conn.prepareStatement(sql); for(int i=0;i<args.length;i++)
{
ps.setObject(i+1,args[i]);
} rs=ps.executeQuery(); ResultSetMetaData rsmd=(ResultSetMetaData) rs.getMetaData();
int columnCount=rsmd.getColumnCount(); if(rs.next()){
T t=clazz.newInstance(); //反射 for(int i=0;i<columnCount;i++){
Object columValue=rs.getObject(i+1);
String columnLable1=rsmd.getColumnLabel(i+1); java.lang.reflect.Field field=clazz.getDeclaredField(columnLable1);
field.setAccessible(true);
field.set(t,columValue);
} return t; }
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null; } }
最新文章
- 【日记】搭建一个node本地服务器
- windows下自动FTP的脚本
- jQuery判断网页中的id是否有重复的
- html php 重定向 跳转 刷新
- SharePoint 2013中规划企业搜索体系结构
- Bungie Interview with Halo3 Developer
- Android串口通信(基于Tiny6410平台)
- javaScript中with的用法
- tweenanim动画
- 【ASP.NET MVC】MVC概述
- webpack学习之路
- 用Laravel Sms实现 laravel短信验证码的发送
- vue 组件复用不刷新
- js判断是否安装某个android app,没有安装下载该应用(websocket通信,监听窗口失去焦点事件)
- 回调函数: 一定要在函数名前加上 CALLBACK,否则有可能引起内存崩溃!
- BZOJ.2597.[WC2007]剪刀石头布(费用流zkw)
- 劈配 [多省省选] [BZOJ5251] [网络流]
- 框架&;样式表
- Tomcat启动报错:[The configuration may be corrupt or incomplete]的解决方案
- 安装后没有IP
热门文章
- java继承实现的基本原理
- .NET Core开源Quartz.Net作业调度框架实战演练
- centos 分区挂载准备工作
- BFS --- 素数环
- Vue框架(一)——Vue导读、Vue实例(挂载点el、数据data、过滤器filters)、Vue指令(文本指令v-text、事件指令v-on、属性指令v-bind、表单指令v-model)
- C语言环境搭建
- python ---升级所有安装过的package
- java之mybatis之使用mybatis实现crud操作
- C# vb .net实现邮戳效果滤镜
- 利用jQuery-Word-Export导出word (含ECharts)