1. 程式人生 > >JDBC程式設計作業--登陸介面的實現(檢測資料庫中是否有使用者名稱,並且可以註冊使用者)!

JDBC程式設計作業--登陸介面的實現(檢測資料庫中是否有使用者名稱,並且可以註冊使用者)!

package 資料庫;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;

import java.awt.Font;

import javax.swing.JButton;
import javax.swing.JTextField;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.beans.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;

public class database extends JFrame
{
	private JPanel contentPane;
	private JTextField textField_name;

	private java.sql.Statement stat;
	boolean flag = false;
	boolean s = true;
	StringBuffer string = new StringBuffer();

	public static void main(String[] args)
	{
		database frame = new database();
		frame.setVisible(true);
	}

	public database()
	{
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 573, 381);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);

		JLabel name = new JLabel("\u7528\u6237\u540D\uFF1A");
		name.setFont(new Font("宋體", Font.PLAIN, 20));
		name.setBounds(83, 76, 86, 18);
		contentPane.add(name);

		textField_name = new JTextField();
		textField_name.setBounds(218, 71, 217, 24);
		contentPane.add(textField_name);
		textField_name.setColumns(10);

		JLabel password = new JLabel("\u5BC6 \u7801\uFF1A");
		password.setFont(new Font("宋體", Font.PLAIN, 20));
		password.setBounds(83, 136, 85, 18);
		contentPane.add(password);

		JPasswordField Password = new JPasswordField();
		Password.setBounds(220, 130, 214, 24);
		contentPane.add(Password);
		Password.setColumns(10);

		JLabel repassword = new JLabel("\u786E\u8BA4\u5BC6\u7801\uFF1A");
		repassword.setFont(new Font("宋體", Font.PLAIN, 20));
		repassword.setBounds(83, 201, 117, 18);
		contentPane.add(repassword);

		JPasswordField Repassword = new JPasswordField();
		Repassword.setBounds(221, 195, 215, 24);
		contentPane.add(Repassword);
		Repassword.setColumns(10);

		JLabel show = new JLabel("");
		show.setFont(new Font("宋體", Font.PLAIN, 12));
		show.setBounds(353, 232, 196, 81);
		contentPane.add(show);

		JButton see = new JButton("\u68C0\u6D4B");
		see.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
			{
				String sqlString = textField_name.getText();
				if (sqlString.isEmpty() || sqlString.length() > 18)
				{
					JOptionPane.showMessageDialog(null, "輸入不能為空或不能超過18位!");
				}
				try
				{

					ResultSet set = stat
							.executeQuery("select ID from user where ID= '"
									+ sqlString + "'");
					set.next();
					int rows = set.getRow();
					if (rows != 0)
					{
						JOptionPane.showMessageDialog(null, "使用者名稱存在,請註冊!");

					} else
					{
						JOptionPane.showMessageDialog(null, "使用者名稱可用,請輸入密碼!");
					}
				} catch (SQLException e1)
				{
					e1.printStackTrace();
					JOptionPane.showMessageDialog(null, "sql有異常!");
				}

			}
		});
		see.setBounds(441, 69, 103, 27);
		contentPane.add(see);

		JButton click = new JButton("\u6CE8\u518C");
		click.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
			{
				String psw1 = new String(Password.getPassword());
				String psw2 = new String(Repassword.getPassword());
				if (psw1.length() > 18 || psw2.length() > 18)
				{
					JOptionPane.showMessageDialog(null, "密碼不能超過18位,請重新輸入!");
				}
				if (psw1.equals(psw2))
				{
					try
					{
						stat.executeUpdate("insert into user(ID,NUM) values("
								+ "'" + textField_name.getText() + "','"
								+ new String(Password.getPassword()) + "'"
								+ ")");
						JOptionPane.showMessageDialog(null, "註冊成功!");
					} catch (SQLException e1)
					{
						e1.printStackTrace();
						JOptionPane.showMessageDialog(null, "有誤!");
					}

				}

				else
				{
					JOptionPane.showMessageDialog(null, "兩次輸入密碼不同,請重新輸入!");
				}

			}

		});
		click.setFont(new Font("宋體", Font.PLAIN, 18));
		click.setBounds(91, 282, 113, 27);
		contentPane.add(click);

		JButton retry = new JButton("\u91CD\u586B");
		retry.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
			{
				textField_name.setText("");
				Password.setText("");
				Repassword.setText("");

			}
		});
		retry.setFont(new Font("宋體", Font.PLAIN, 18));
		retry.setBounds(226, 281, 113, 27);
		contentPane.add(retry);

		// 連線資料庫

		String URL = "jdbc:mysql://localhost:3306/userdb";//mysql資料庫連結!!<span style="font-family: Arial, Helvetica, sans-serif;">jdbc:mysql://localhost:3306/表名</span>
		String user = "root";//sql使用者名稱
		String psd = "871185723";//sql密碼
		try
		{
			Class.forName("com.mysql.jdbc.Driver");
			Connection con = DriverManager.getConnection(URL, user, psd);
			stat = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
					ResultSet.CONCUR_READ_ONLY);
			JOptionPane.showMessageDialog(null, "SQL資料庫連結成功!");
		}

		catch (SQLException | ClassNotFoundException e)
		{
			JOptionPane.showMessageDialog(null, "SQL連結不成功!");
		} finally
		{
			JOptionPane.showMessageDialog(null, "登陸開始!");
		}

	}

}


JDBC程式設計給我最大的感觸就是,可以用sql對資料進行管理和儲存,快捷便利。並且為以後的前端開發有很大的幫助。

實驗總結:

1.熟悉資料庫的使用。

    操作mysql的命令列:

       show databases;//顯示資料

       use 表明;//使用表

       show tables;//顯示錶中資訊

       use user;//使用表中的資訊

       describe user;//選擇該資訊

       select *from user;//顯示該user中的所有資訊成員

       insert into user(‘ ’,‘ ’);//將資訊插入到表中

       {除此之外,又需要傻瓜式sql操作的軟體的可以找我}

2.掌握資料庫如何在JFrame中使用。

    String URL = "jdbc:mysql://localhost:3306/userdb";
String user = "root";
String psd = "871185723";
Class.forName("com.mysql.jdbc.Driver");  
Connection con = DriverManager.getConnection(URL, user, psd);  //connection介面用於連線資料庫和java程式。
Statement  stat = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);//Statement介面執行靜態的SQL語句包括更新語句。其中有execute(String sqlStatement),executeQuery(String sqlQuery), exeuteUpdate(String sqlStatement),close();
JOptionPane.showMessageDialog(null, "SQL資料庫連結成功!");//JOptionPane.showMessageDialog 是彈出提示框的用法!

3.事件監聽器的設定

   必須考慮到所有的事件發生的可能性,並能在程式中提示出來。保持程式的健壯性是很關鍵的。

4.投入大量的時間去滿滿理解和體會程式設計的偉大和美麗!

  不管未來怎樣,就讓時間說話!

相關推薦

JDBC程式設計作業--登陸介面實現檢測資料庫是否使用者名稱並且可以註冊使用者

package 資料庫; import java.awt.BorderLayout; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JOptionPane; impor

Hive的JDBC介面實現Eclipse環境配置

實驗環境: 3個節點(OS:ubuntu12.04):master,node1,node2 hadoop版本:1.0.3 hive版本:0.11.0 1.首先是在叢集上安裝Hive: (1)下載hive安裝包到本地(我下載到了master節點上,為了減輕master節點的

一步一步實現web程式資訊管理系統之一----登陸介面實現

一步一步實現web程式資訊管理系統 在web程式中特別是資訊管理系統,登陸功能必須有而且特別重要。每一個學習程式開發或以後工作中,都會遇到實現登陸功能的需求。而登陸功能最終提供給客戶或展現給客戶的最基本的就是2個文字框一個按鈕使用者名稱與密碼,外加一個登陸按鈕。本篇記錄一下登陸功能的前端介面的實現。 1.

SAP移庫介面實現Java版

 SAP移庫介面Java程式碼實現: 移庫介面: public static Map<String, Object> storageMoveToSap(StorageTransfer storageTransfer) throws Throwable{ SapBapiIn

SAP發料介面實現Java版

 發料介面原始碼如下: public Map<String, Map<Integer, Map<String, Object>>> sendOutStorageMtrReq(List<Map<String, Object>>

SAP移庫介面實現C#版

 SAP移庫介面C#版本實現程式碼如下: /// <summary> /// 移庫介面(將倉庫中的地址移到線邊倉,線邊倉的地址用模板檔名稱作為引數傳過來) /// </summary> /// <param

SAP發料介面實現C#版

//發料介面 /// <summary> /// 根據發料單號獲取發料單內所包含的物料資訊,根據生產訂單的編號,發料至生產訂單 /// </summary> /// <param name

C語言面向物件程式設計:單鏈表實現5

 前面我們介紹瞭如何在 C 語言中引入面嚮物件語言的一些特性來進行面向物件程式設計,從本篇開始,我們使用前面提到的技巧,陸續實現幾個例子,最後呢,會提供一個基本的 http server 實現(使用 libevent )。在這篇文章裡,我們實現一個通用的資料結構:單鏈表。  

《機器學習》程式設計作業的Python實現【ex1_multi.py】

Python程式碼 import numpy as np import matplotlib.pyplot as plt def featureNormalize(X): X_norm = X mu = np.zeros((1, X.shape[1])) sigma

《機器學習》程式設計作業的Python實現【ex1.py】

Python程式碼 from mpl_toolkits.mplot3d import Axes3D import numpy as np import matplotlib.pyplot as plt # ============= warmUpExercise ================

EF三層構架+介面實現增刪改查

DbContext   DbContext是EntityFramework很重要的部分,連線域模型與資料庫的橋樑,是與資料庫通訊的主要類。   DbContext主要負責以下活動: EntitySet::DbContext包含了所有對映到表的entities

吳恩達Coursera深度學習課程 deeplearning.ai (5-3) 序列模型和注意力機制--程式設計作業(二):觸發字檢測

Part 2: 觸發字檢測 關鍵詞語音喚醒 觸發字檢測 歡迎來到這個專業課程的最終程式設計任務! 在本週的視訊中,你瞭解瞭如何將深度學習應用於語音識別。在本作業中,您將構建一個語音資料集並實現觸發字檢測演算法(有時也稱為關鍵字檢測或喚醒檢測)。觸發字

初學JDBC(四)-使用Preparedstatement介面實現增刪改操作

      上一篇部落格中我講了使用Statement對資料庫中的表內容進行增刪改操作,先講了原始的增刪改即每次增加刪除修改都需要載入資料庫驅動,連線資料庫,執行SQL語句,關閉資料庫,這樣的話,程式碼的重複量有些大,程式碼冗餘比較明顯,後來進行修改,運用了Java繼承封裝

劍指Offer——程式設計題的Java實現更新完畢……

二維陣列中的查詢 在一個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函式,輸入這樣的一個二維陣列和一個整數,判斷陣列中是否含有該整數。 /* * 思路 矩陣是有序的,從右上角來看,向左數字遞減,向下數字遞

Java微信公眾平臺開發(九)--關鍵字回覆以及客服介面實現該公眾號暫時無法提供服務解決方案

轉自:http://www.cuiyongzhi.com/post/47.html 我們在微信公眾號的後臺可以發現微信給我們制定了兩種模式,一種是開發者模式(也就是我們一直在做的開發),還有一種模式是編輯模式,然而很蛋疼的是有些功能一旦我們切換到開發者模式下就無法使用了,比較典型的就是關鍵字回覆以及伺服器無

[Java併發程式設計實戰] 柵欄 CyclicBarrier 實現含程式碼

溫故而知新,可以為師矣。—《論語》 它的意思是:“溫習舊知識從而得知新的理解與體會,憑藉這一點就可以成為老師了 PS: 如果覺得本文有用的話,請幫忙點贊,留言評論支援一下哦,您的支援是我最大的動力!謝謝啦~ 柵欄(Barrier)類似於閉鎖,

標籤欄主介面實現

現在Fragment的應用真的是越來越廣泛了,之前Android在3.0版本加入Fragment的時候,主要是為了解決Android Pad螢幕比較大,空間不能充分利用的問題,但現在即使只是在手機上,也有很多的場景可以運用到Fragment了,今天我們就來學習其中一個

unity3d5.1物體橢圓旋轉選擇介面實現

  偶然在群裡看到有人拿了一張橢圓物體旋轉選擇介面來問怎麼實現(也不知道這樣描述對不對,反正是橢圓的,而且還是旋轉的,類似於關卡和角色選擇),於是 想了下自己寫了一個類似的功能,方法可能不是很完美,但是也算是一個思路吧,就當練練手熟悉unity。原圖如下: 附自己

Java訪問https介面實現JDK/Httpclient4

用兩種方式分別實現了,第一種是jdk原生的,程式碼稍微多點,第二種是基於httpclient4版本的。在我的機器上,訪問同一個介面原生的效能要好很多(前者900ms,後者5.7s左右),httpclient主要效能消耗

定製ListView的介面讓列表不僅文字還有圖片fruitImage.setImageResource(fruit.getImageId());

1.定義自己的實體類來作為ListView的適配型別如: public class Fruit { private String name;//水果的名字 private int imageId;//水果的圖片資源 public Fruit(String name,int imageId)