導航:首頁 > 編程語言 > java登錄界面資料庫

java登錄界面資料庫

發布時間:2023-02-15 21:57:56

java中如何實現登錄界面與資料庫正確連接

import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JDialog;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;/*** * @author mzhe**/
class Loginfrm extends JDialog implements ActionListener
{
JLabel l_name,l_pass,l_error;
JTextField t_name;
JButton b_enter,b_cancle,b_clear;
JPanel pan1,pan2,pan3,pan4;
JPasswordField t_pass;
String sname,spass;
int sunit;
NetConn sql;
Statement sqll;
ResultSet rs;
Librarybox lbox;
int until=0;
Loginfrm(JFrame f,String s)
{
//界面布局
super(f,s);
l_name=new JLabel("名字:");
l_pass=new JLabel("密碼:");
l_error=new JLabel("請輸入用戶名和密碼登錄");
t_name=new JTextField("",10);
t_pass=new JPasswordField("",10);
t_pass.setEchoChar('*');
b_enter=new JButton("確定");
b_enter.addActionListener(this);
b_cancle=new JButton("取消");
b_cancle.addActionListener(this);
b_clear=new JButton("清除");
b_clear.addActionListener(this);
pan1=new JPanel();
pan2=new JPanel();
pan3=new JPanel();
pan4=new JPanel();
pan1.add(l_name);
pan1.add(t_name);
pan2.add(l_pass);
pan2.add(t_pass);
pan3.add(l_error);
pan4.add(b_enter);
pan4.add(b_cancle);
pan4.add(b_clear);
setLayout(new GridLayout(4,1));
add(pan1);
add(pan2);
add(pan3);
add(pan4);
//建立資料庫連接
sql=new NetConn();
//設置窗口大小
setSize(300,300);
setVisible(false);
//得到屏幕信息以便使框架居中顯示
Dimension screeSize = Toolkit.getDefaultToolkit().getScreenSize();
int screeWidth=screeSize.width;
int screeHeight=screeSize.height;
//得到框架的大小信息
Dimension frameSize=this.getSize();
int x=(screeWidth-frameSize.width)/2;
int y=(screeHeight-frameSize.height)/2;
this.setLocation(x, y);
}
public void actionPerformed(ActionEvent e)
{
//單擊確定按鈕的事件處理程序
if(e.getSource()==b_enter)
{
//如果連續登錄次數小於4
if(until<=4)
{
//如果用戶名或者密碼為空,將顯示提示信息
if(t_name.getText().equals("")||t_pass.getText().equals(""))
{
l_error.setText("用戶名和密碼不能為空");
}
else
{
try{
sqll=sql.connect();
//根據用戶名查詢
rs=sqll.executeQuery("SELECT * FROM users where username="+"'"+t_name.getText()+"'");
//遍歷查詢得到的結果集
while(rs.next())
{
sname=rs.getString(2);
spass=rs.getString(3);
//得到登錄用戶的級別
sunit=Integer.parseInt(rs.getString(4));
//如果密碼正確
if(t_pass.getText().equals(spass))
{
//判斷用戶的級別,根據不同的級別,顯示不同的菜單
switch(sunit)
{
case 1:{l_error.setText("登錄成功");
t_name.setText("");
t_pass.setText("");
lbox=new Librarybox();
lbox.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
lbox.setResizable(false);
lbox.bookfi.setEnabled(true);
lbox.bookse.setEnabled(true);
lbox.bookth.setEnabled(true);
lbox.bookfo.setEnabled(true);
lbox.mi_system_manger.setEnabled(true);
lbox.mi_system_login.setEnabled(false);
lbox.setVisible(true);this.dispose();
break;
}
case 2: {
l_error.setText("登錄成功");
t_name.setText("");
t_pass.setText("");
lbox=new Librarybox();
lbox.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
lbox.setResizable(false);
lbox.bookfi.setEnabled(false);
lbox.bookse.setEnabled(false);
lbox.bookth.setEnabled(true);
lbox.bookfo.setEnabled(false);
lbox.mi_system_manger.setEnabled(false);
lbox.mi_system_login.setEnabled(false);
lbox.setVisible(true);
this.dispose();break;
}
case 3:
{
l_error.setText("登錄成功");
t_name.setText("");
t_pass.setText("");
lbox=new Librarybox();
lbox.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
lbox.setResizable(false);
lbox.bookfi.setEnabled(true);
lbox.bookse.setEnabled(false);
lbox.bookth.setEnabled(false);
lbox.bookfo.setEnabled(true);
lbox.mi_system_manger.setEnabled(false);
lbox.mi_system_login.setEnabled(false);
lbox.fi_msglabel_user.setEnabled(false);
lbox.setVisible(true);
this.dispose();
break;
}
}
}
else{
l_error.setText("用戶名或密碼錯誤!");
until++;
}
}
}catch(SQLException e2){
e2.printStackTrace();
}
}
}
//超出登錄次數
else{
l_error.setText("你已經超出登錄次數");
t_name.setEnabled(false);
t_pass.setEnabled(false);
b_enter.setEnabled(false);
b_clear.setEnabled(false);
}
}//單擊清除按鈕的事件處理程序
else if(e.getSource()==b_clear)
{
t_name.setText("");
t_pass.setText("");
l_error.setText("請輸入用戶名和密碼登錄");
}
//單擊取消按鈕的事件處理程序
else if(e.getSource()==b_cancle)
{
dispose();
}
}
}

② 前台的JAVA的GUI登入界面如何連接到資料庫

用的access資料庫public class OLEDB
{
String strDriver = "sun.jdbc.odbc.JdbcOdbcDriver";
String strUrl = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=lee.mdb";
String strUserName = "";
String strPassWord = "";
Connection conn;
Statement stmt;
ResultSet rs;
public OLEDB()
{
try
{
Class.forName(strDriver);
conn = DriverManager.getConnection(strUrl, strUserName, strPassWord);
stmt = conn.createStatement();
}
catch (ClassNotFoundException e)
{

}
catch (SQLException e)
{
e.printStackTrace();
}
}
public ResultSet select( String strSQL )
{
try
{
rs = stmt.executeQuery(strSQL);
}
catch (SQLException e)
{
e.printStackTrace();
} return rs;
}
public void insert( String strSQL )
{
try
{
stmt.executeUpdate(strSQL);
JOptionPane.showMessageDialog(null,"插入成功!");
}
catch (SQLException e)
{
e.printStackTrace();
}
}
public void update( String strSQL )
{
try
{
stmt.executeUpdate(strSQL);
JOptionPane.showMessageDialog(null,"修改成功!");
}
catch (SQLException e)
{
e.printStackTrace();
}
}
public void delete( String strSQL )
{
try
{
stmt.executeUpdate(strSQL);
JOptionPane.showMessageDialog(null,"刪除成功!");
}
catch (SQLException e)
{
e.printStackTrace();
}
}
}

③ java中如何實現登錄界面與資料庫正確連接

使用JDBC進行資料庫的增刪改查操作1.下載Microsoft SQL Server 2005 JDBC 驅動包jar文件 將jar文件引入工程中2.封裝資料庫鏈接的獲取和關閉操作import java.sql.*;public class BaseDao {
/**
* 資料庫驅動類的字元串,完整的包名加類名 在工程中查看添加的jar文件 能看到這個類
*/
private static final String DRIVE = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; /**
* 資料庫連接地址
*
* DataBaseName=資料庫名稱 其它固定
*/
private static final String URL = "jdbc:sqlserver://localhost:1433;DataBaseName=bbs"; /**
* 連接資料庫的用戶名
*/
private static final String USER = "sa"; /**
* 用戶密碼
*/
private static final String PASSWORD = ""; /**
* 獲取連接 異常直接拋出 或者捕獲後自定義異常信息再拋出
*/
public static Connection getConnection() throws Exception {
Class.forName(DRIVE);
return DriverManager.getConnection(URL, USER, PASSWORD);
} /**
* 關閉與資料庫的連接 釋放資源
*/
public static void closeAll(ResultSet resultSet, PreparedStatement pst,
Connection connection) throws Exception {
if (resultSet != null)
resultSet.close();
if (pst != null)
pst.close();
if (connection != null)
connection.close();
}}3.創建圖書的實體類public class Book {
/**
* 資料庫主鍵
*/
private Long id; /**
* 作者
*/
private String author; /**
* 書名
*/
private String name;
/**
* 默認構造
*
*/
public Book() {
}
/**
* 全欄位構造
* @param id
* @param author
* @param name
*/
public Book(Long id, String author, String name) {
this.id = id;
this.author = author;
this.name = name;
}
/**
* 以下為讀寫屬性的方法
* @return
*/
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
4.創建與圖書表交互的工具類import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;public class BookDao {
/**
* 添加新書
*
* @param book 要添加入資料庫的圖書 作者 書名 必須給定
*/
public void addBook(Book book) throws Exception {
// 連接
Connection connection = null;
// 執行語句
PreparedStatement pst = null;
try {
connection = BaseDao.getConnection();
// 構造執行語句
String sql = "insert into book values(" + book.getAuthor() + ","
+ book.getName() + ")";
pst = connection.prepareStatement(sql);
pst.executeUpdate(); } catch (Exception e) {
// 拋出異常
throw e;
} finally {
// 無論是否異常 均關閉資料庫
BaseDao.closeAll(null, pst, connection);
}
} /**
* 查詢所有書籍列表
*/
public List<Book> getBooks() throws Exception {
// 用於存放查尋結果的集合
List<Book> books = new ArrayList<Book>();
// 連接
Connection connection = null;
// 執行語句
PreparedStatement pst = null;
// 查詢結果
ResultSet resultSet = null;
try {
connection = BaseDao.getConnection();
// 構造查詢語句
String sql = "select * from book";
pst = connection.prepareStatement(sql);
resultSet = pst.executeQuery(); // 循環讀取查詢結果行
while (resultSet.next()) {
// getXXX的參數為數據表列名
Book book = new Book(resultSet.getLong("id"), resultSet
.getString("author"), resultSet.getString("name"));
// 將封裝好的圖書對象存入集合
books.add(book);
}
} catch (Exception e) {
// 拋出異常
throw e;
} finally {
// 無論是否異常 均關閉資料庫
BaseDao.closeAll(resultSet, pst, connection);
}
// 返回查詢結果
return books;
}/***其它方法類似上面 只是語句不同*/
}當然 以上只是簡單的封裝 初學者可以在理解以上代碼的基礎上 進行更高級的封裝
5.使用BookDao添加書籍和獲取所有書籍列表import java.util.List;/**
* 測試類
* @author Administrator
*
*/
public class Test { /**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
//創建工具類對象
BookDao = new BookDao();
//創建一本圖書
Book book = new Book(null,"QQ:495691293","編程菜鳥");
//添加書籍到資料庫
.addBook(book);

//獲取所有圖書列表
List<Book> books = .getBooks();
//輸出結果
for (Book b : books) {
System.out.println(b.getId()+"\t"+b.getAuthor()+"\t"+b.getName());
}
}}

④ 求用java編登錄頁面,可以連接MySql 資料庫

第一步:創建一個查詢過程,因為在登錄時要根據用戶名查詢用戶密碼

此步要用到pl/sql編程知識,代碼如下:

create or replace procere sel_user(uname in varchar2,pass out varchar2) is
begin
select users.password into pass from users where users.username=uname and rownum = 1;
end;

第二步:編寫登錄頁面(login.java)(採用純java+servlet編寫)

//login.java如下

package cn.hnu;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class testhtml extends HttpServlet {

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setContentType("text/html;charset=gbk");
try {
PrintWriter pw = resp.getWriter();
pw.println("<html>");
pw.println("<head>");
pw.println("<title>");
pw.println("用戶登錄");
pw.println("</title>");
pw.println("</head>");
pw.println("<body>");
pw.println("<h1>用戶登錄</h1>");
pw.println("<hr>");
pw.println("<form method=post action=loginCl>");
pw.println("用戶名:<input type=text name=userName><br>");
pw.println("密  碼:<input type=password name=password><br>");
pw.println("<input type=submit value=登錄>");
pw.println("<input type=reset value=重置>");
pw.println("</form>");
pw.println("</body>");
pw.println("</html>");
} catch (Exception e) {
e.printStackTrace();
// TODO: handle exception
}
}

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
this.doGet(req, resp);
}

}

第三步:編程成功登錄頁面(wel.java) //wel.java如下,它主要用於用戶正常登錄後顯示信息給用戶

package cn.hnu;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class Wel extends HttpServlet {

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub

//防止用戶非法登錄
HttpSession hs = req.getSession();
String s = (String)hs.getAttribute("pass");
if(s == null){
resp.sendRedirect("login");
}
PrintWriter pw = resp.getWriter();
pw.write("welcome,hello");
}

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
this.doGet(req, resp);
}

}

第四步:編寫login處理頁面(loginCl.java)

package cn.hnu;

import java.io.IOException;
import java.sql.*;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class loginCl extends HttpServlet {

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
String u = req.getParameter("userName");
String p = req.getParameter("password");

//查詢資料庫
String pa=null;
Connection ct = null;
CallableStatement cs = null;

try {
Class.forName("oracle.jdbc.driver.OracleDriver");
ct = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:oracle",
"scott", "tiger");
cs = ct.prepareCall("{call sel_user(?,?)}");
cs.setString(1, u);
cs.registerOutParameter(2, oracle.jdbc.OracleTypes.VARCHAR);
cs.execute();
pa = cs.getString(2);

System.out.println("u=" + u + " p=" + pa);

} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {

try {
if (cs != null) {
cs.close();
}
if (ct != null) {
ct.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

//驗證用戶信息是否合法

if (p.equals(pa)) {
HttpSession hs = req.getSession(true);//防止用戶非法登錄
hs.setAttribute("pass", "OK");
resp.sendRedirect("wel");
} else {
resp.sendRedirect("login");
}
}

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
this.doGet(req, resp);
}

}

親,sql可以換成MySQL
這個沒關系的,別的都可以照搬來用

⑤ java中如何實現登錄界面與資料庫正確連接

使用JDBC進行資料庫的增刪改查操作1.下載Microsoft SQL Server 2005 JDBC 驅動包jar文件 將jar文件引入工程中2.封裝資料庫鏈接的獲取和關閉操作import java.sql.*;public class BaseDao {x0dx0a /**x0dx0a * 資料庫驅動類的字元串,完整的包名加類名 在工程中查看添加的jar文件 能看到這個類x0dx0a */x0dx0a private static final String DRIVE = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; /**x0dx0a * 資料庫連接地址x0dx0a * x0dx0a * DataBaseName=資料庫名稱 其它固定x0dx0a */x0dx0a private static final String URL = "jdbc:sqlserver://localhost:1433;DataBaseName=bbs"; /**x0dx0a * 連接資料庫的用戶名x0dx0a */x0dx0a private static final String USER = "sa"; /**x0dx0a * 用戶密碼x0dx0a */x0dx0a private static final String PASSWORD = ""; /**x0dx0a * 獲取連接 異常直接拋出 或者捕獲後自定義異常信息再拋出x0dx0a */x0dx0a public static Connection getConnection() throws Exception {x0dx0a Class.forName(DRIVE);x0dx0a return DriverManager.getConnection(URL, USER, PASSWORD);x0dx0a } /**x0dx0a * 關閉與資料庫的連接 釋放資源x0dx0a */x0dx0a public static void closeAll(ResultSet resultSet, PreparedStatement pst,x0dx0a Connection connection) throws Exception {x0dx0a if (resultSet != null)x0dx0a resultSet.close();x0dx0a if (pst != null)x0dx0a pst.close();x0dx0a if (connection != null)x0dx0a connection.close();x0dx0a }}3.創建圖書的實體類public class Book {x0dx0a /**x0dx0a * 資料庫主鍵x0dx0a */x0dx0a private Long id; /**x0dx0a * 作者x0dx0a */x0dx0a private String author; /**x0dx0a * 書名x0dx0a */x0dx0a private String name;x0dx0a /**x0dx0a * 默認構造x0dx0a *x0dx0a */x0dx0a public Book() {x0dx0a }x0dx0a /**x0dx0a * 全欄位構造x0dx0a * @param idx0dx0a * @param authorx0dx0a * @param namex0dx0a */x0dx0a public Book(Long id, String author, String name) {x0dx0a this.id = id;x0dx0a this.author = author;x0dx0a this.name = name;x0dx0a }x0dx0a /**x0dx0a * 以下為讀寫屬性的方法x0dx0a * @returnx0dx0a */x0dx0a public String getAuthor() {x0dx0a return author;x0dx0a }x0dx0a public void setAuthor(String author) {x0dx0a this.author = author;x0dx0a }x0dx0a public Long getId() {x0dx0a return id;x0dx0a }x0dx0a public void setId(Long id) {x0dx0a this.id = id;x0dx0a }x0dx0a public String getName() {x0dx0a return name;x0dx0a }x0dx0a public void setName(String name) {x0dx0a this.name = name;x0dx0a }x0dx0a}x0dx0a4.創建與圖書表交互的工具類import java.sql.Connection;x0dx0aimport java.sql.PreparedStatement;x0dx0aimport java.sql.ResultSet;x0dx0aimport java.util.ArrayList;x0dx0aimport java.util.List;public class BookDao {x0dx0a /**x0dx0a * 添加新書x0dx0a * x0dx0a * @param book 要添加入資料庫的圖書 作者 書名 必須給定x0dx0a */x0dx0a public void addBook(Book book) throws Exception {x0dx0a // 連接x0dx0a Connection connection = null;x0dx0a // 執行語句x0dx0a PreparedStatement pst = null;x0dx0a try {x0dx0a connection = BaseDao.getConnection();x0dx0a // 構造執行語句x0dx0a String sql = "insert into book values(" + book.getAuthor() + ","x0dx0a + book.getName() + ")";x0dx0a pst = connection.prepareStatement(sql);x0dx0a pst.executeUpdate(); } catch (Exception e) {x0dx0a // 拋出異常x0dx0a throw e;x0dx0a } finally {x0dx0a // 無論是否異常 均關閉資料庫x0dx0a BaseDao.closeAll(null, pst, connection);x0dx0a }x0dx0a } /**x0dx0a * 查詢所有書籍列表x0dx0a */x0dx0a public List getBooks() throws Exception {x0dx0a // 用於存放查尋結果的集合x0dx0a List books = new ArrayList();x0dx0a // 連接x0dx0a Connection connection = null;x0dx0a // 執行語句x0dx0a PreparedStatement pst = null;x0dx0a // 查詢結果x0dx0a ResultSet resultSet = null;x0dx0a try {x0dx0a connection = BaseDao.getConnection();x0dx0a // 構造查詢語句x0dx0a String sql = "select * from book";x0dx0a pst = connection.prepareStatement(sql);x0dx0a resultSet = pst.executeQuery(); // 循環讀取查詢結果行x0dx0a while (resultSet.next()) {x0dx0a // getXXX的參數為數據表列名x0dx0a Book book = new Book(resultSet.getLong("id"), resultSetx0dx0a .getString("author"), resultSet.getString("name"));x0dx0a // 將封裝好的圖書對象存入集合x0dx0a books.add(book);x0dx0a }x0dx0a } catch (Exception e) {x0dx0a // 拋出異常x0dx0a throw e;x0dx0a } finally {x0dx0a // 無論是否異常 均關閉資料庫x0dx0a BaseDao.closeAll(resultSet, pst, connection);x0dx0a }x0dx0a // 返回查詢結果x0dx0a return books;x0dx0a }/***其它方法類似上面 只是語句不同*/x0dx0a}當然 以上只是簡單的封裝 初學者可以在理解以上代碼的基礎上 進行更高級的封裝x0dx0a5.使用BookDao添加書籍和獲取所有書籍列表import java.util.List;/**x0dx0a * 測試類x0dx0a * @author Administratorx0dx0a *x0dx0a */x0dx0apublic class Test { /**x0dx0a * @param argsx0dx0a * @throws Exception x0dx0a */x0dx0a public static void main(String[] args) throws Exception {x0dx0a //創建工具類對象x0dx0a BookDao = new BookDao();x0dx0a //創建一本圖書x0dx0a Book book = new Book(null,"QQ:495691293","編程菜鳥");x0dx0a //添加書籍到資料庫x0dx0a .addBook(book);x0dx0a x0dx0a //獲取所有圖書列表x0dx0a List books = .getBooks();x0dx0a //輸出結果x0dx0a for (Book b : books) {x0dx0a System.out.println(b.getId()+"\t"+b.getAuthor()+"\t"+b.getName());x0dx0a }x0dx0a }}

⑥ JAVA登陸界面資料庫連接

你可以在點擊登錄之後,首先獲取【管理員、教師、學生】這個控制項的值,根據它的值,看看用戶點擊的是哪種身份,然後做不同的查詢資料庫操作,這個需要你自己用代碼實現。主要是如何獲取【管理員、教師、學生】這個控制項的值,比較簡單,自己網路一下吧~~
希望可以幫到你。

閱讀全文

與java登錄界面資料庫相關的資料

熱點內容
usb藍牙android 瀏覽:405
伺服器顯示error1什麼意思 瀏覽:708
python代碼精簡 瀏覽:457
文件加密了怎麼找到了 瀏覽:193
jellyfin插件怎麼選擇主伺服器 瀏覽:836
asp用戶注冊源碼 瀏覽:48
什麼是照片壓縮文件 瀏覽:392
java調用js代碼 瀏覽:979
崑山市民app怎麼修改身份信息 瀏覽:779
php登陸次數 瀏覽:744
python字元轉成數字 瀏覽:822
海川用的是什麼伺服器 瀏覽:376
口才是練出來的pdf 瀏覽:458
雲伺服器哪個公司性價比高 瀏覽:517
源碼論壇打包 瀏覽:558
php怎麼做成word 瀏覽:692
python批量生成密鑰 瀏覽:492
程序員要不要考社區人員 瀏覽:150
app的錢怎麼充q幣 瀏覽:814
android銀行卡識別 瀏覽:756