十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
我给你提供一个全面的。
为安顺等地区用户提供了全套网页设计制作服务,及安顺网站建设行业解决方案。主营业务为成都网站建设、成都做网站、安顺网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
目标:能够掌握一大半java的核心。
问题:看起来代码多,但有助于入门甚至达到高手级别。这个应该算是个精典。
建议:把所有代码复制粘贴。
要求:必须连接数据库。
第一个包bean包中的类:
//这个是自动生成的包,表示本包
package bean;
//映射数据库类,方便管理数据
public class UserBean {
//私有字段
private int userId;//学生id
private String userName;//学生姓名
private String userPass;//学生密码
//封装成公共属性,(把私有字段全选中,右键——源代码——生成get与set方法)
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPass() {
return userPass;
}
public void setUserPass(String userPass) {
this.userPass = userPass;
}
//空构造函数
public UserBean()
{
}
//初始化参数时用的构造函数
public UserBean(String name,String pass)
{
this.userName= name;
this.userPass = pass;
}
}
第二个包support包中的类:
package support;
import com.microsoft.sqlserver.jdbc.SQLServerDriver;//导入连接驱动包
import java.sql.*;//导入数据库包
//这个类是用来连接数据库的,在些之前要先加载驱动
public class DBConn {
//连接数据库方法,类型为连接类
public Connection getConn()
{
//定义一个连接对象
Connection conn = null;
try {
//加载驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
System.out.println("加载驱动成功!");
//连接数据库
conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databasename=myt85","sa","123456");
System.out.println("数据库连接成功!");
} catch (Exception e) {
e.printStackTrace();
System.out.println("数据库连接失败!");
}
return conn;
}
//关闭数据库方法
public void close(Connection conn,PreparedStatement pre)
{
try {
if(pre!=null)
{
pre.close();
}
//后面的判断是判断是否完全关闭
if(conn!=null||!conn.isClosed())
{
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
System.out.println("关闭数据库失败!");
}
}
//重载关闭方法,加入了一个关闭读取流
public void close(Connection conn,PreparedStatement pre,ResultSet rs)
{
try {
if(rs!= null)
{
rs.close();
}
if(pre!=null)
{
pre.close();
}
//后面的判断是判断是否完全关闭
if(conn!=null||!conn.isClosed())
{
conn.close();
}
} catch (SQLException e)
{
e.printStackTrace();
}
}
}
第三个包dao包中的类:
package dao;
import bean.UserBean;//映射数据库包
import support.DBConn;//连接数据库包
import java.util.*;//集合包
import java.sql.*;//数据库包
//这个类写了操作数据库里面数据的各种方法
public class UserDao {
//全局连接对象、预处理语句对象、结果集对象、连接类对象变量
Connection conn = null;
PreparedStatement pre = null;
ResultSet rs = null;
DBConn dbc = new DBConn();
//根据id号查询
public UserBean getAllUsersByuserId(int id)
{
//实例化用户类对象
UserBean user = new UserBean();
//要执行的SQL语句
String sql = "select * from users where userid = ?";
try {
//先打开数据库连接
conn = dbc.getConn();
//获得执行SQL的命令
pre = conn.prepareStatement(sql);
pre.setInt(1, id);//传参
//把SQL命令执行的内容赋值给结果集,这个地方千万不能把顺序写反了
rs = pre.executeQuery();
//如果读取到了内容,就把值赋给user对象
if(rs.next())
{
//后面的字段要与数据库列名相同
user.setUserId(rs.getInt("userid"));
user.setUserName(rs.getString("name"));
user.setUserPass(rs.getString("userpass"));
}
} catch (Exception e) {
e.printStackTrace();
}
finally
{
//最后要关上数据库
dbc.close(conn, pre, rs);
}
return user;
}
//查询所有,返回类型是集合
public ArrayList getAlluser()
{
//实例化集合
ArrayList array = new ArrayList();
String sql = "select * from users";
try {
conn = dbc.getConn();
pre = conn.prepareStatement(sql);
rs = pre.executeQuery();
while(rs.next())
{
//把查询到的结果集添加到ArrayList集合中去,无论是字符串还是int,取出的值一定要与数据库对应
array.add("id号:"+rs.getString("userid"));
array.add("姓名:"+rs.getString(2));
array.add("密码:"+rs.getString(3));
}
} catch (Exception e) {
e.printStackTrace();
}
finally
{
dbc.close(conn, pre, rs);
}
return array;
}
//删除
public boolean deleteUser(int id)
{
boolean bool = false;
String sql = "delete users where userid = ?";
try {
conn = dbc.getConn();
pre = conn.prepareStatement(sql);
pre.setInt(1, id);//这一步千万不要忘写或写错了顺序,很搞死人的
int count = pre.executeUpdate();//受影响的行数
if(count0)
{
bool = true;
System.out.println("删除成功!");
return bool;//这一步是节省资源的办法,如果是正确的后面的就不执行
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("删除不成功!");
}
finally
{
dbc.close(conn, pre);
}
return bool;
}
//增加,这里面的参数是一个用户
public boolean insertUser(UserBean user)
{
boolean bool = false;
String sql = "insert into users values(?,?)";
try {
conn = dbc.getConn();
pre = conn.prepareStatement(sql);
pre.setString(1, user.getUserName());
pre.setString(2, user.getUserPass());
int count = pre.executeUpdate();
if(count0)
{
bool = true;
System.out.println("插入成功!");
return bool;
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("插入不成功!");
}
finally
{
dbc.close(conn, pre);
}
return bool;
}
//修改
public boolean updateUser(UserBean user)
{
boolean bool = false;
String sql = "update users set username = ? where userid = ?";
try {
conn = dbc.getConn();
pre = conn.prepareStatement(sql);
pre.setString(1, user.getUserName());
pre.setInt(2, user.getUserId());
int count = pre.executeUpdate();
if(count0)
{
bool = true;
System.out.println("修改成功!");
return bool;
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("修改不成功!");
}
finally
{
dbc.close(conn, pre);
}
return bool;
}
//验证登陆,,这里面的参数是自定义的两个参数
public boolean getAllUsersByUserNameAnduserPass(String name,String pass)
{
boolean bool = false;
//要执行的SQL语句
String sql = "select * from users where username = ? and userpass =?";
try {
//先打开数据库连接
conn = dbc.getConn();
//获得执行SQL的命令
pre = conn.prepareStatement(sql);
pre.setString(1,name);//传用户名
pre.setString(2,pass);//传用户密码
rs = pre.executeQuery();
//如果读取到了东西,则进行下述操作
if(rs.next())
{
bool = true;
System.out.println("登陆成功!");
return bool;
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("登陆不成功!");
}
finally
{
//最后要关上数据库
dbc.close(conn, pre,rs);
}
return bool;
}
//查询总的记录数
public int countUser()
{
//要执行的SQL语句,SQL语句用到了一个sd,是用来取值的
String sql = "select count(*) as ad from users ";
int count = 0;
try {
//先打开数据库连接
conn = dbc.getConn();
//获得执行SQL的命令
pre = conn.prepareStatement(sql);
rs = pre.executeQuery();
//如果读取到了东西,则进行下述操作
if(rs.next())
{
//获得ad的值,也就是总行数
count=Integer.parseInt(rs.getString("ad"));
}
} catch (Exception e) {
e.printStackTrace();
}
finally
{
//最后要关上数据库
dbc.close(conn, pre,rs);
}
//返回总行数
return count;
}
}
第四个包main包中的类:
package main;
import bean.UserBean;//映射数据库包
import support.DBConn;//连接数据库包
import java.util.*;//集合包
import java.sql.*;//数据库包
import dao.UserDao;//操作数据库方法包
//测试类
public class Test
{
public static void main(String args[])
{
//测试根据id号查询方法
UserDao ud = new UserDao();
// //用一个用户去接收ud方法中的值
// UserBean ub = ud.getAllUsersByuserId(1);
// //分别输出打印
// System.out.println("id号:"+ub.getUserId());
// System.out.println("姓名:"+ub.getUserName());
// System.out.println("密码:"+ub.getUserPass());
//
//
// //测试查询所有
// ArrayList array = ud.getAlluser();
// for(int i=0;iarray.size();i++)
// {
// //因为装进去的是字符串,所以也要定义相对的类型接收
// //array的取值也有不同用get()
// String s = array.get(i).toString();
// System.out.println(s);
// }
//
//
// //测试删除方法
// boolean b=ud.deleteUser(3);
//
// //测试插入方法,这个用到的是用户类的构造函数
// UserBean user = new UserBean("曹元","123");
// boolean bl =ud.insertUser(user);
//
//
// //测试修改方法,这个用到的是直接给类对象赋值方式
// UserBean userbean = new UserBean();
// userbean.setUserName("laoying");
// userbean.setUserId(4);
// boolean ble =ud.updateUser(userbean);
//测试验证方法
// boolean blea = ud.getAllUsersByUserNameAnduserPass("laoying", "123");
//测试查询的总行数
//用来接收总行数的变量
int i = ud.countUser();
System.out.println("查询到的总行数为:"+i);
}
}
弄了一下,代码如下,你可以参考参考:
Fruit类:
public abstract class Fruit {
private String shape;
public String getShape() {
return shape;
}
public void setShape(String shape) {
this.shape = shape;
}
public abstract void eat();
}
Apple类:
public class Apple extends Fruit {
public Apple(String shape) {
setFatherShape(shape);
}
public void setFatherShape(String shape)
{
super.setShape(shape);
}
public String getFatherShape()
{
return super.getShape();
}
@Override
public void eat()
{
System.out.println(getFatherShape()+"的苹果好甜");
}
}
Banana类:
public class Banana extends Fruit {
public Banana(String shape) {
setFatherShape(shape);
}
public void setFatherShape(String shape)
{
super.setShape(shape);
}
public String getFatherShape()
{
return super.getShape();
}
@Override
public void eat()
{
System.out.println(getFatherShape()+"的香蕉好香");
}
}
Orange类:
public class Orange extends Fruit {
public Orange(String shape) {
setFatherShape(shape);
}
public void setFatherShape(String shape)
{
super.setShape(shape);
}
public String getFatherShape()
{
return super.getShape();
}
@Override
public void eat()
{
System.out.println(getFatherShape()+"的桔子好酸");
}
}
Game类:
public class Game {
public Fruit luckDraw(){
Random random=new Random();
int luckNum= random.nextInt(3);//随机产生一个0-2之间的数
Fruit fruit = null;
//0-苹果(圆圆的)、1-香蕉(弯弯的)、2-桔子(长长的)
if(luckNum==0){
fruit=new Apple("圆圆的");
}else if (luckNum==1) {
fruit=new Banana("弯弯的");
}else if (luckNum==2) {
fruit=new Orange("长长的");
}
return fruit;
}
public static void main(String[] args) {
Fruit[] fruits=new Fruit[10];
Game game=new Game();
for (int i=0;i10;i++) {
fruits[i]=game.luckDraw();
fruits[i].eat();
}
}
}
运行结果:
弯弯的的香蕉好香
弯弯的的香蕉好香
长长的的桔子好酸
长长的的桔子好酸
圆圆的的苹果好甜
长长的的桔子好酸
圆圆的的苹果好甜
弯弯的的香蕉好香
长长的的桔子好酸
长长的的桔子好酸
楼主若觉得回答有所帮助,望采纳,谢谢!
第一个类Customer
public class Customer{
private String firstName;
private String lastName;
private Account account;
public Customer(String f,String l){
this.firstName=f;
this.lastName=l;
}
public String getFirstName(){
return firstName;
}
public String getLastName(){
return lastName;
}
public Account getAccount(){return account;}
public void setAccount(Account acct){
this.account=acct;
}
}
第二个类Bank
public class Bank{
private int numberOfCustomers;
private List
customerList;
public Bank(){
customerList=new ArrayList
();
numberOfCustomers=customerList.size();
}
public int getNumberOfCustomers(){
return numberOfCustomers;
}
public void addCustomer(String f,String l){
customerList.add(new Customer(f,l))
}
public Customer getCustomer(int index){
return customerList.get(index);
}
}
第三个类Account
public class Account{
private Double balance;
public Account(Double init_balance){
this.balance=init_balance
}
public Double getBalance(){
return balance;
}
public Double deposit(Double amount){
return balance+amount;
}
public Boolean withDraw(Double amount){
if(balance-amount=0){
return true;
}else{
return false;
}
}
第一步:新建数据库
连接的是本地localhost,新建一个新的数据库名是jdbctest
然后建表t_emp
不会的话可通过执行下方的sql语句建表
CREATE TABLE `t_emp` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`salary` double DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
第二步:新建java项目
新建完以后添加mysql驱动的jar包,jar包自己下载
在项目上右键鼠标属性,然后
添加jar包,我这里已经加载过了
第三步:编写代码
package com.gf;
import java.sql.DriverManager;
import java.sql.SQLException;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Statement;
public class Test {
public static void main(String[] args) throws Exception {
int flag=0;
//1.加载驱动
Class.forName("com.mysql.jdbc.Driver");
//2.获取连接
Connection conn=(Connection) DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/jdbctest?user=rootpassword=123456useUnicode=truecharacterEncoding=UTF-8");
//3.创建statement
Statement sm=(Statement) conn.createStatement();
//4.执行sql语句
flag=sm.executeUpdate("insert into t_emp(name,salary) values('菲菲',34.9)");
if(flag!=0) {
System.out.println("员工信息增加成功");
}else {
System.out.println("添加失败");
}
}
}
注意点:
---------------------------------------------------------------------------------
DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/jdbctest?user=rootpassword=123456useUnicode=truecharacterEncoding=UTF-8");
这里需要修改自己本机的连接信息,不然会出现连接失败
最后的执行结果