亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

使用JDBC工具類實(shí)現(xiàn)簡(jiǎn)單的登錄管理系統(tǒng)

 更新時(shí)間:2022年02月24日 10:02:18   作者:勤奮的小鎮(zhèn)青年、  
這篇文章主要為大家詳細(xì)介紹了使用JDBC工具類實(shí)現(xiàn)簡(jiǎn)單的登錄管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

使用JDBC工具類實(shí)現(xiàn)一個(gè)簡(jiǎn)單的登錄管理系統(tǒng),供大家參考,具體內(nèi)容如下

實(shí)現(xiàn)要求:

在控制臺(tái)實(shí)現(xiàn)一個(gè)用戶管理系統(tǒng),包含3個(gè)功能:

1.用戶登錄  2.注冊(cè)  3.用戶查詢。

啟動(dòng)程序后,進(jìn)入主菜單選項(xiàng):

輸出:“請(qǐng)選擇您要操作的功能:1.用戶登錄  2.新用戶注冊(cè) 3所有用戶查詢: ”

功能說明:

1.用戶登錄:

請(qǐng)用戶輸入用戶名和密碼,接收后,去數(shù)據(jù)庫(kù)的users表中查詢是否存在該用戶名。并輸出合理的提示,例如:登錄成功!  用戶名不存在! 密碼錯(cuò)誤!

不論登錄是否成功,都返回主菜單界面。

2.新用戶注冊(cè) :

請(qǐng)用戶輸入用戶名和密碼,接收后,去數(shù)據(jù)庫(kù)的users表中執(zhí)行新增操作。并輸出合理的提示,例如:注冊(cè)成功!  用戶名已存在! 

3.所有用戶查詢:

該功能必須在用戶登錄后方可查看,如果用戶已經(jīng)登錄成功,即可在控制臺(tái)查看所有用戶的所有信息。如果沒有登錄,提示:您還沒有登錄呢,無權(quán)查看用戶信息!

第一步:創(chuàng)建JDBCUtils類和jdbc.properties文件

user=root
password=123456
url=jdbc:mysql://localhost:3306/db2?useSSLfalse&serverTimezone=UTC
//1.獲取連接對(duì)象 ?2.關(guān)閉連接對(duì)象---取代單元測(cè)試中的 ?@Before 和 @After 3.實(shí)現(xiàn)登錄驗(yàn)證
public class JDBCUtils {
? ? private static Connection conn;
? ? private static Properties prop;
? ? private ?static PreparedStatement prep;
? ? private static ResultSet rs;
? ? static {
? ? ? ? try {
? ? ? ? //使用類加載器加載jdbc.properties文件,返回一個(gè)字節(jié)流,和Properties關(guān)聯(lián)在一起
? ? ? ? ? ? InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("jdbc.properties");
? ? ? ? ? ? //創(chuàng)建Properties對(duì)象
? ? ? ? ? ? prop = new Properties();
? ? ? ? ? ? prop.load(is);
? ? ? ? } catch (Exception e) {
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? }
?? ?//1.獲取連接對(duì)象
? ? public static Connection getConnection(){
? ? ? ? try {
? ? ? ? ? ? return DriverManager.getConnection(prop.getProperty("url"),prop);
? ? ? ? } catch (SQLException e) {
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }

? ? ? ? return null;
? ? }
?? ?//2.釋放資源
? ? public static void close(ResultSet rs, Statement state,Connection conn){
? ? ? ? if(rs !=null){
? ? ? ? ? ? try {
? ? ? ? ? ? ? ? rs.close();
? ? ? ? ? ? } catch (SQLException e) {
? ? ? ? ? ? ? ? e.printStackTrace();
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? if(state !=null){
? ? ? ? ? ? try {
? ? ? ? ? ? ? ? state.close();
? ? ? ? ? ? } catch (SQLException e) {
? ? ? ? ? ? ? ? e.printStackTrace();
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? if(conn !=null){
? ? ? ? ? ? try {
? ? ? ? ? ? ? ? conn.close();
? ? ? ? ? ? } catch (SQLException e) {
? ? ? ? ? ? ? ? e.printStackTrace();
? ? ? ? ? ? }
? ? ? ? }
? ? }
? ? 3.//判斷登錄
? ? public ?static ?boolean login(String user,String password){
? ? //3.1獲取連接對(duì)象
? ? ? ? Connection conn = JDBCUtils.getConnection();
? ? ? ? try {
? ? ? ? ?//3.2定義sql
? ? ? ? ? ? String sql="select * from user where username=? and password=?";
? ? ? ? ? ? //3.3獲取執(zhí)行sql的對(duì)象
? ? ? ? ? ? prep = conn.prepareStatement(sql);
? ? ? ? ? ? //3.3.1 給占位符賦值
? ? ? ? ? ? prep.setString(1,user);
? ? ? ? ? ? prep.setString(2,password);
? ? ? ? ? ? //3.4執(zhí)行sql
? ? ? ? ? ? ResultSet rs = prep.executeQuery();
? ? ? ? ? ? return rs.next();
? ? ? ? } catch (SQLException e) {
? ? ? ? ? ? e.printStackTrace();
? ? ? ? } finally{
? ? ? ? //3.4調(diào)用關(guān)閉連接靜態(tài)方法
? ? ? ? ?? ?JDBCUtils.close(rs,prep,conn);?? ?
? ? ? ? }
? ? ? ? return false;
? ? }
}

第二步:創(chuàng)建測(cè)試類:Hello01

public class Hello01 {
? ? public static void main(String[] args) {
? ? ? ? Scanner sc = new Scanner(System.in);
? ? ? ? Connection conn=null;
? ? ? ? PreparedStatement prep=null;
? ? ? ? ResultSet rs=null;
? ? ? ? Statement state=null;
? ? ? ? //判斷是否登錄過,如果沒有登錄,就無法查詢
? ? ? ? boolean a=false;
? ? ? ? //判斷用戶是否登錄,登錄過就無法再次登錄
? ? ? ? boolean b=true;
? ? ? ? String name;
? ? ? ? String psw;
? ? ? ? while (true){
? ? ? ? ? ? System.out.println("請(qǐng)輸入你要執(zhí)行的操作:1.登錄 2.注冊(cè) 3.查詢");
? ? ? ? ? ? int i = sc.nextInt();
? ? ? ? ? ? switch (i){
? ? ? ? ? ? ? ? case 1:
? ? ? ? ? ? ? ? ? ? if(b){
? ? ? ? ? ? ? ? ? ? ? ? System.out.println("請(qǐng)輸入你的賬號(hào):");
? ? ? ? ? ? ? ? ? ? ? ? name= sc.next();
? ? ? ? ? ? ? ? ? ? ? ? System.out.println("請(qǐng)輸入你的密碼:");
? ? ? ? ? ? ? ? ? ? ? ? psw= sc.next();
? ? ? ? ? ? ? ? ? ? ? ? //JDBCUtils.login(name,psw) 這個(gè)方法的返回值是Boolean類型 可以當(dāng)if的條件判斷
? ? ? ? ? ? ? ? ? ? ? ? if(JDBCUtils.login(name,psw)){
? ? ? ? ? ? ? ? ? ? ? ? ? ? System.out.println("恭喜您登錄成功");
? ? ? ? ? ? ? ? ? ? ? ? ? ? //登錄成功 a的值變?yōu)閠urn ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? a=true;
? ? ? ? ? ? ? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? ? ? ? ? ? ? System.out.println("不好意思登錄失敗,請(qǐng)重新操作?。?!");
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? b=false;
? ? ? ? ? ? ? ? ? ? }else {
? ? ? ? ? ? ? ? ? ? ? ? System.out.println("您已經(jīng)登錄?。?!");
? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? case 2:
? ? ? ? ? ? ? ? ? ? try {
? ? ? ? ? ? ? ? ? ? ? ? System.out.println("請(qǐng)輸入您要注冊(cè)的賬號(hào):");
? ? ? ? ? ? ? ? ? ? ? ? name = sc.next();
? ? ? ? ? ? ? ? ? ? ? ? conn = JDBCUtils.getConnection();
? ? ? ? ? ? ? ? ? ? ? ? //開啟事務(wù)
? ? ? ? ? ? ? ? ? ? ? ? conn.setAutoCommit(false);
? ? ? ? ? ? ? ? ? ? ? ? while (true){
? ? ? ? ? ? ? ? ? ? ? ? String sql = "select * from user where username=?";
? ? ? ? ? ? ? ? ? ? ? ? prep = conn.prepareStatement(sql);
? ? ? ? ? ? ? ? ? ? ? ? prep.setString(1,name);
? ? ? ? ? ? ? ? ? ? ? ? ?rs = prep.executeQuery();
? ? ? ? ? ? ? ? ? ? ? ? if(rs.next()){
? ? ? ? ? ? ? ? ? ? ? ? ? ? System.out.println("用戶名已存在,請(qǐng)重新輸入:");
? ? ? ? ? ? ? ? ? ? ? ? ? ? name = sc.next();
? ? ? ? ? ? ? ? ? ? ? ? }else {
? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ? ? ? ? ? System.out.println("請(qǐng)輸入您的密碼:");
? ? ? ? ? ? ? ? ? ? ? ? psw = sc.next();
? ? ? ? ? ? ? ? ? ? ? ? String sql1="insert into user values (null,?,?)";
? ? ? ? ? ? ? ? ? ? ? ? ?prep = conn.prepareStatement(sql1);
? ? ? ? ? ? ? ? ? ? ? ? ?prep.setString(1,name);
? ? ? ? ? ? ? ? ? ? ? ? ?prep.setString(2,psw);
? ? ? ? ? ? ? ? ? ? ? ? ?prep.executeUpdate();
? ? ? ? ? ? ? ? ? ? ? ? ?//int i1=3/0;
? ? ? ? ? ? ? ? ? ? ? ? System.out.println("恭喜您注冊(cè)成功!??!");
? ? ? ? ? ? ? ? ? ? ? ? //提交事務(wù)
? ? ? ? ? ? ? ? ? ? ? ? conn.commit();
? ? ? ? ? ? ? ? ? ? } catch (SQLException e) {
? ? ? ? ? ? ? ? ? ? ? ? try {
? ? ? ? ? ? ? ? ? ? ? ? ?? ?//事務(wù)回滾
? ? ? ? ? ? ? ? ? ? ? ? ? ? conn.rollback();
? ? ? ? ? ? ? ? ? ? ? ? } catch (SQLException ex) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ex.printStackTrace();
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? e.printStackTrace();
? ? ? ? ? ? ? ? ? ? }finally {
? ? ? ? ? ? ? ? ? ? ? ? JDBCUtils.close(rs,prep,conn);
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? case 3:
? ? ? ? ? ? ? ? //當(dāng)a的值為turn時(shí)才可以查詢 否則返回操作頁(yè)面
? ? ? ? ? ? ? ? ? ? if(a){
? ? ? ? ? ? ? ? ? ? ? ? try {
? ? ? ? ? ? ? ? ? ? ? ? ? ? conn = JDBCUtils.getConnection();
? ? ? ? ? ? ? ? ? ? ? ? ? ? String sql ="select * from user";
? ? ? ? ? ? ? ? ? ? ? ? ? ? state = conn.createStatement();
? ? ? ? ? ? ? ? ? ? ? ? ? ? rs = state.executeQuery(sql);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ArrayList<User> users = new ArrayList<>();
? ? ? ? ? ? ? ? ? ? ? ? ? ? while (rs.next()){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? int id = rs.getInt("id");
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? String username = rs.getString("username");
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? String password = rs.getString("password");
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? User user = new User(id,username,password);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? users.add(user);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? System.out.println(user);
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? } catch (SQLException e) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? e.printStackTrace();
? ? ? ? ? ? ? ? ? ? ? ? } finally {
? ? ? ? ? ? ? ? ? ? ? ? ? ? JDBCUtils.close(rs,state,conn);
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? }else {
? ? ? ? ? ? ? ? ? ? ? ? System.out.println("請(qǐng)先登錄,在查詢?。?!");
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? }
? ? }
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring中Bean初始化和銷毀的方式總結(jié)

    Spring中Bean初始化和銷毀的方式總結(jié)

    這篇文章主要為大家整理了Spring中Bean初始化和銷毀的多種方式,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以了解一下
    2023-04-04
  • Kotlin基礎(chǔ)教程之控制流(順序,分支,循環(huán))

    Kotlin基礎(chǔ)教程之控制流(順序,分支,循環(huán))

    這篇文章主要介紹了Kotlin基礎(chǔ)教程之控制流的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • 深入java事件注冊(cè)的應(yīng)用分析

    深入java事件注冊(cè)的應(yīng)用分析

    本篇文章是對(duì)java事件注冊(cè)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • 淺談Mybatis樂觀鎖插件

    淺談Mybatis樂觀鎖插件

    這篇文章主要介紹了淺談Mybatis樂觀鎖插件,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-12-12
  • Spring核心容器之Bean創(chuàng)建過程詳解

    Spring核心容器之Bean創(chuàng)建過程詳解

    這篇文章主要介紹了Spring核心容器之Bean創(chuàng)建過程詳解,獲取?Bean?的方法是?getBean,其來自?BeanFactory?繼承的AbstractAutowireCapableBeanFactory?抽象類繼承的AbstractBeanFactory?抽象類中,需要的朋友可以參考下
    2023-11-11
  • springboot?整合sentinel的示例代碼

    springboot?整合sentinel的示例代碼

    本文主要介紹了springboot?整合sentinel的示例代碼,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • java身份證合法性校驗(yàn)并提取身份證有效信息

    java身份證合法性校驗(yàn)并提取身份證有效信息

    這篇文章主要為大家詳細(xì)介紹了java身份證合法性校驗(yàn),并獲取并根據(jù)身份證號(hào)提取身份證相關(guān)信息,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • Spring中@ExceptionHandler注解的使用方式

    Spring中@ExceptionHandler注解的使用方式

    這篇文章主要介紹了Spring中@ExceptionHandler注解的使用方式,@ExceptionHandler注解我們一般是用來自定義異常的,可以認(rèn)為它是一個(gè)異常攔截器(處理器),需要的朋友可以參考下
    2024-01-01
  • 重寫Java中的equals方法介紹

    重寫Java中的equals方法介紹

    這篇文章主要介紹了重寫Java中的equals方法介紹,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • Java HttpClient-Restful工具各種請(qǐng)求高度封裝提煉及總結(jié)

    Java HttpClient-Restful工具各種請(qǐng)求高度封裝提煉及總結(jié)

    這篇文章主要介紹了Java HttpClient-Restful工具各種請(qǐng)求高度封裝提煉及總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10

最新評(píng)論