- 帮朋友写的一个作业,在这里记录一下,用久了springboot框架竟然忘记了以前都是怎么连接数据库的了。
-
需求
-
需要用户登录成功后才能进行操作
- 用户登陆成功后在控制台显示”现在可以写你的日记了!”(要求可以多行输入,在输入save之后把用户ID,输入时间,输入内容进行存储)
- 存储之后程序继续等待,用户输入scan之后查询出当前用户的所有日记
现在开始写代码,先创建个项目,把需要的jar包加入项目,创建数据库连接工具类,创建连接池配置数据库
创建两个bean
public class Notes {//pknumber
private Integer id;//日记
private String note;//日记时间
private Date notedate;//与用户ID相关联
private Integer userid;
//get and set
// tostring
}
public class User {//pknumber
private Integer id;//用户名
private String username;//密码
private String password;
//get and set
// tostring
}
创建daoutils
package com.yaobin.util; import java.beans.BeanInfo; import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Properties; import javax.sql.DataSource; import com.alibaba.druid.pool.DruidDataSourceFactory; public class DAOUtil { private static DataSource dataSource; static { try { Properties p = new Properties(); p.load(DAOUtil.class.getClassLoader().getResourceAsStream("druid.properties")); dataSource = DruidDataSourceFactory.createDataSource(p); } catch (Exception e) { e.printStackTrace(); } } /*** * 加载驱动和获取连接对象 */ public static Connection getConnection(){ try { return dataSource.getConnection(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } public static int executeUpdate(String sql,Object... obj){ Connection conn = null; PreparedStatement ps = null; try { conn = DAOUtil.getConnection(); ps = conn.prepareStatement(sql); for (int i = 0; i < obj.length; i++) { ps.setObject(i+1, obj[i]); } return ps.executeUpdate(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ //关闭资源化 close(null, ps, conn); } return 0; } /*** * 只负责查询 并将查询的结果返回 * @param sql * @param obj * @return List*/ public static List< Map> executeQuery(String sql,Object... obj){ Connection conn = null; PreparedStatement ps = null; ResultSet set = null; try { conn = DAOUtil.getConnection(); ps = conn.prepareStatement(sql); for (int i = 0; i < obj.length; i++) { ps.setObject(i+1, obj[i]); } set = ps.executeQuery();//不一样的表 查询出来的 set 不一样 int count = set.getMetaData().getColumnCount(); List ,>
配置数据库连接池
driverClassName=com.mysql.jdbc.Driver
url=jdbc\:mysql\://localhost\:3306/数据库名称?useOldAliasMetadataBehavior\=true&useUnicode\=true&characterEncoding\=utf-8
username=用户名
password=密码
现在开始主方法,
- 登录方法
- 记录用户输入的用户名以及密码,去数据库查询有没有此条记录,判断返回结果是否为空以及长度是否大于0,条件不满足则重新调用自身
- 日记录入数据库方法
- 利用scancer获取用户在控制台的输入信息,如果不是save,就使用stringbuffer不断拼接,如果是save,结束方法,存入数据库
- 查询方法
- 利用登录方法中返回的用户的ID,以此ID为条件去数据库查询,显示用户输入的所有日记
package com.yaobin.function;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
import com.yaobin.beans.Notes;
import com.yaobin.beans.User;
import com.yaobin.util.DAOUtil;
public class Entrance {
static User user;
static Scanner sc;
static Boolean login;
public static void main(String[] args) {
Entrance entrance = new Entrance();
entrance.login();
entrance.write();
entrance.selectAll();
}
public void write() {
String input = "";
StringBuffer noteCache = new StringBuffer();
System.out.println("现在可以写你的日记了 !");
while (true) {
input = sc.nextLine();
if (!input.equals("save")) {
noteCache.append(input + ",");
}else {
break;
}
}
noteCache.deleteCharAt(noteCache.length() - 1).append("。");
String insertSql = "INSERT note(note,notedate,userid) VALUES(?,now(),?)";
int executeUpdate = DAOUtil.executeUpdate(insertSql, new String(
noteCache), user.getId());
if (executeUpdate > 0) {
System.out.println("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
System.out.println("日记存入成功");
}
}
/**
* 根据ID查询
*
* @param id
*/
private void selectAll() {
String sql = "SELECT * from note where userid = ?";
System.out.println("输入scan打印您的日记,输入其他任意符号结束程序");
if (sc.nextLine().equals("scan")) {
List note = DAOUtil.selectList(sql, Notes.class,
user.getId());
for (Notes notes : note) {
System.out.println(notes);
}
} else {
System.out.println("程序到此结束");
}
}
/**
* 登录方法
*
* @param username
* @param password
*/
private Boolean login() {
sc = new Scanner(System.in);
user = new User();
System.out.print("请输入用戶名:");
user.setUsername(sc.nextLine());
System.out.print("请输入密码:");
user.setPassword(sc.nextLine());
String loginsql = "SELECT * from user where username = ? and password = ?";
List> executeQuery = DAOUtil.executeQuery(loginsql,
user.getUsername(), user.getPassword());
if (executeQuery != null && executeQuery.size() != 0) {
System.out.println("用户:" + user.getUsername() + "登录成功");
Integer id = (Integer) executeQuery.get(0).get("id");
user.setId(id);
return true;
} else {
System.out.println("用户名或密码错误,请重新登录");
login();
}
return null;
}
}
效果
Original: https://www.cnblogs.com/xnuuuu/p/12113102.html
Author: 小秫秫儿
Title: jdbc连接数据库做简单的增查
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/592712/
转载文章受原作者版权保护。转载请注明原作者出处!