新手白
你控制台要输入内容
Alohalila
已经解决了
Leroyy
慕莱坞602254
第一,根据前端,你要设计你的数据库和表。第二,做jdbc 和数据库的connect。第三写 sql 语句,使用java执行的函数,得到结果集合,传给前端显示
Java开发4131
当删除有外键的属性的数据时,需要先把该外键值关联的数据删除掉。这是外键约束的要求。
也就是说删除student表的数据时,必须先把courcse表中通过sno关联的数据删除掉。
慕工程4942694
oo爽子
老师的代码是有在action中赋值的
qq_天黑请闭眼_5
包有没有其实都一样的,包只是为了让代码分层分工更加清晰。
每个类之间并没有关系,因为既没有继承也没有实现接口。类和类非要说有什么关系那就是调用关系,比如GoddessDao dao=new GoddessDao(),新建一个GoddessDao的对象,然后就可以调用这个对象的方法。
慕函数3178513
request对象是发送一次请求后,它是会销毁的。你可以用session来保存,然后用session来获取,这样子,只有当你关了服务器的时候,这个对象才会被销毁。还有疑问可以继续讨论。
望采纳,谢谢。
黑窝
空指针异常,尝试抛出或者捕获下试试
慕慕1693231
分成2个步骤去完成啊 像上面的add方法里面的一样
BlueBlueSkyZ
java.util包里的data类型不是可以直接插数据库吗?
notmatter
package view;
import java.sql.SQLException;
import java.util.List;
import java.util.Scanner;
import control.*;
import model.*;
public class Test {
public static Scanner in = new Scanner(System.in);
private static Control test = new Control();
/**
* 1.循环执行输入exit才退出
* 2.执行内容
* 增删改查数据表
* 3.细节展示
* @param args
* @throws SQLException
*/
public static void main(String[] args) throws SQLException {
//外层循环
System.out.println("***********************************");
System.out.println("欢迎来到禁区!");
System.out.println("***********************************");
System.out.println("【exit】\t退出");
System.out.println("【query】\t查询女神信息");
System.out.println("【get】\t查询女神详细信息");
System.out.println("【add】\t增加女神");
System.out.println("【delete】\t删除女神");
System.out.println("【clear】\t删除所有女神信息");
System.out.println("【edit】\t修改女神信息");
String select = "null";
//创建对象
Test it = new Test();
String[] s = {"query", "get", "add", "delete", "clear", "edit"};
do {
System.out.println("***********************************");
if (select.equals(s[0])) {
it.query();
} else if (select.equals(s[1])) {
it.get();
} else if (select.equals(s[2])) {
it.add();
} else if (select.equals(s[3])) {
it.delete();
} else if (select.equals(s[4])) {
it.clear();
} else if (select.equals(s[5])) {
it.edit();
} else {
}
System.out.println("***********************************");
} while (!(select = in.next()).equals("exit"));
System.out.println("退出!");
}
public void delete() throws SQLException {
System.out.println("请输入要删除女神的ID:");
int id = in.nextInt();
test.delete(id);
System.out.println("删除成功!");
}
public void clear() throws SQLException {
test.deleteAll();
System.out.println("所有女神信息已清除!");
}
public void get() throws SQLException {
System.out.println("请输入要查询女神的编号:");
int id = in.nextInt();
Goddess g = test.getQuery(id);
System.out.println("ID:" + g.getId() +
"\nName:" + g.getName() +
"\nAge:" + g.getAge() +
"\nPhone:" + g.getPhone());
}
public void query() throws SQLException {
List<Goddess> gList = test.getQuery();
for (Goddess goddess : gList) {
System.out.println("ID:" + goddess.getId() +
"\tName:" + goddess.getName() );
}
}
public void add() throws SQLException {
System.out.println("请输入要添加女神基本信息[ID][Name][Age][Phonenumber]:");
int id = in.nextInt();
String name = in.next();
int age = in.nextInt();
String number = in.next();
Goddess g = new Goddess(id, age, name, number);
test.add(g);
}
public void edit() throws SQLException {
System.out.println("请输入要修改女神的基本信息[ID][Name][Age][Phonenumber]:");
int id = in.nextInt();
String name = in.next();
int age = in.nextInt();
String number = in.next();
Goddess g = new Goddess(id, age, name, number);
test.undates(id, g);
System.out.println("修改成功!");
}
}
dengyu
可以执行完所有再关闭Connection,老师为了演示方便没有立马关闭。
这里有讨论:http://bbs.csdn.net/topics/390869796
一条SQL语句后连接数据库的Connection必须要关闭吗?
可以批处理sql语句,流程走完后关闭连接。
建议执行完一次数据库操作,就关闭数据库资源;
频繁的话,可以考虑数据库连接池,由连接池初始化一定数量的连接,每次程序跟连接池打交道,不直接跟数据库打交道,这样节省资源。
获取一个connection后,每次产生一个Statement,都相当于产生一个游标,每次操作完,便要关闭该statement。否则,如果一直只向数据库索取连接,但不关闭的话,那么数据库的statement连接耗尽时,便会抛出,游标超出最大数量的异常 ORA-01000: maximum open cursors exceeded 。
1.一般数据库访问量大的话,开启连接池
2.开启连接池以后,就像楼上所说,用完关闭。其实后台socket并没有关闭,等待下一次使用。在Java7中try(申请资源){}这种结构,离开时会自动调用close的
3.业务复杂的时候,并不能一次完成所有sql操作,所以用完必须关。
prepareStatement("sql语句"),可以连续使用。
qq_触动_0
安静的等待,年底老师可能比较忙,先学习其他的,望楼主采纳!
Refactor易先生
public class View {
private static final String CONTEXT = "欢迎来到女神禁区:\n" + "下面是女神禁区的功能列表:\n"
+ "[MAIN/M]:主菜单\n" + "[QUERY/Q]:查看全部女神的信息\n"
+ "[GET/G]:查看某位女神的详细信息\n" + "[ADD/A]:添加女神信息\n"
+ "[UPDATE/U]:更新女神信息\n" + "[DELETE/D]:删除女神信息\n"
+ "[SEARCH/S]:查询女神信息(根据姓名、手机号来查询)\n" + "[EXIT/E]:退出女神禁区\n"
+ "[BREAK/B]:退出当前功能,返回主菜单";
private static final String OPERATION_MAIN = "MAIN";
private static final String OPERATION_QUERY = "QUERY";
private static final String OPERATION_GET = "GET";
private static final String OPERATION_ADD = "ADD";
private static final String OPERATION_UPDATE = "UPDATE";
private static final String OPERATION_DELETE = "DELETE";
private static final String OPERATION_SEARCH = "SEARCH";
private static final String OPERATION_EXIT = "EXIT";
private static final String OPERATION_BREAK = "BREAK";
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
Goddess g = new Goddess();
GoddessAction ga = new GoddessAction();
System.out.println(CONTEXT);
// 保持程序持续运行
String cpu = null;
Integer step = 0;
while (input.hasNext()) {// 如果有输入值,则返回true
String in = input.next();
if (OPERATION_EXIT.equals(in.toUpperCase())
|| OPERATION_EXIT.substring(0, 1).equals(in.toUpperCase())) {
System.out.println("您已成功退出女神后宫");
break;
} else if (OPERATION_MAIN.equals(in.toUpperCase())
|| OPERATION_MAIN.substring(0, 1).equals(in.toUpperCase())) {
System.out.println(CONTEXT);
} else if (OPERATION_BREAK.equals(in.toUpperCase())
|| OPERATION_BREAK.substring(0, 1).equals(in.toUpperCase())) {
cpu = null;
step = 0;
System.out.println(CONTEXT);
} else if (OPERATION_ADD.equals(in.toUpperCase())
|| OPERATION_ADD.substring(0, 1).equals(in.toUpperCase())
|| OPERATION_ADD.equals(cpu)) {
cpu = OPERATION_ADD;
if (step == 0) {
System.out.println("请输入女神的[姓名]");
} else if (step == 1) {
g.setUser_name(in);
System.out.println("请输入女神的[年龄]");
} else if (step == 2) {
g.setSex(1);
g.setAge(Integer.parseInt(in));
System.out.println("请输入女神的[生日],格式为:yyyy-MM-dd");
} else if (step == 3) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date birthday = null;
try {
birthday = sdf.parse(in);
g.setBirthday(birthday);
System.out.println("请输入女神的[邮箱]");
} catch (ParseException e) {
e.printStackTrace();
System.out.println("您输入的格式有误,请重新输入");
step = 2;
}
} else if (step == 4) {
g.setEmail(in);
System.out.println("请输入女神的[电话]");
} else if (step == 5) {
g.setMobile(in);
System.out.println("请输入添加人");
} else if (step == 6) {
g.setCreate_user(in);
g.setUpdate_user(in);
g.setIsdel(1);
try {
ga.add(g);
System.out.println("添加女神成功");
} catch (Exception e) {
e.printStackTrace();
System.out.println("添加女神失败");
}
}
if (step == 6) {
step = 0;
} else {
step++;
}
} else if (OPERATION_QUERY.equals(in.toUpperCase())
|| OPERATION_QUERY.substring(0, 1).equals(in.toUpperCase())) {
try {
List<Goddess> list = ga.query();
for (Goddess goddess : list) {
System.out.println(goddess.getId() + "号女神:"
+ goddess.getUser_name() + " 芳龄:"
+ goddess.getAge());
}
} catch (Exception e) {
e.printStackTrace();
}
} else if (OPERATION_GET.equals(in.toUpperCase())
|| OPERATION_GET.substring(0, 1).equals(in.toUpperCase())) {
System.out.println("请输入需要查询的女神编号");
String in2 = input.next();
try {
g = ga.query(Integer.valueOf(in2));
ga.show(g);
} catch (Exception e) {
e.printStackTrace();
}
} else if (OPERATION_DELETE.equals(in.toUpperCase())
|| OPERATION_DELETE.substring(0, 1).equals(in.toUpperCase())) {
System.out.println("请输入要删除的女神");
String in2 = input.next();
try {
ga.del(Integer.valueOf(in2));
System.out.println("删除女神成功");
} catch (Exception e) {
e.printStackTrace();
System.out.println("删除女神失败");
}
} else if (OPERATION_UPDATE.equals(in.toUpperCase())
|| OPERATION_UPDATE.substring(0, 1).equals(in.toUpperCase())
|| OPERATION_UPDATE.equals(cpu)) {
cpu = OPERATION_UPDATE;
if (step == 0) {
System.out.println("进去更新");
System.out.println("请输入需要修改的女神编号");
} else if (step == 1) {
g.setId(Integer.valueOf(in));
System.out.println("请输入女神的[姓名]");
} else if (step == 2) {
g.setUser_name(in);
System.out.println("请输入女神的[年龄]");
} else if (step == 3) {
g.setSex(1);
g.setAge(Integer.parseInt(in));
System.out.println("请输入女神的[生日],格式为:yyyy-MM-dd");
} else if (step == 4) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date birthday = null;
try {
birthday = sdf.parse(in);
g.setBirthday(birthday);
System.out.println("请输入女神的[邮箱]");
} catch (ParseException e) {
e.printStackTrace();
System.out.println("您输入的格式有误,请重新输入");
step = 2;
}
} else if (step == 5) {
g.setEmail(in);
System.out.println("请输入女神的[电话]");
} else if (step == 6) {
g.setMobile(in);
System.out.println("请输入更新人");
} else if (step == 7) {
g.setUpdate_user(in);
g.setIsdel(1);
try {
ga.edit(g);
System.out.println("更新女神成功");
} catch (Exception e) {
e.printStackTrace();
System.out.println("更新女神失败");
}
}
if (step == 7) {
step = 0;
} else {
step++;
}
} else if (OPERATION_SEARCH.equals(in.toUpperCase())
|| OPERATION_SEARCH.substring(0, 1).equals(in.toUpperCase())
|| OPERATION_SEARCH.equals(cpu)) {
cpu = OPERATION_SEARCH;
List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();
Map<String, Object> map = new HashMap<String, Object>();
if (step == 0) {
System.out.println("请输入搜索条件");
step++;
} else if (in.equals("user_name")) {
System.out.println("请输入搜索条件的值");
map.put("name", "user_name");
map.put("rela", "=");
String in2 = input.next();
map.put("value", "'"+in2+"'");
list.add(map);
try {
List<Goddess> g3 = ga.query(list);
ga.show(g3.get(0));
} catch (Exception e) {
e.printStackTrace();
}
} else if (!in.equals("user_name")) {
System.out.println("请输入搜索条件的值");
map.put("name", in);
String in2 = input.next();
map.put("rela", "like");
map.put("value", in2);
list.add(map);
try {
List<Goddess> g3 = ga.query(list);
ga.show(g3.get(0));
} catch (Exception e) {
e.printStackTrace();
}
}
} else {
System.out.println("您输入的值为:" + in);
}
}
}这是自己敲得代码,还没修改。我对GoddessDao里面的方法做了一些调整。“GET”部分的代码不要看。
DaWang
java database connection summary
随便学学
使用了,Integer.parseInt(String sb)
sb传入的值是:姚雪娟,应该输入一个整数范围的数字 (-2^31)到(2^31-1).
young461
月当空
select * from “表名”
萌萌_水立方