Đầu tiên bạn phải Build cái Project ra đã.. rùi mới chạy xem được...
Bạn nhấn F11 để Build cái Project đã Rồi nhấn F6 để chạy hen...
:D
Printable View
Đầu tiên bạn phải Build cái Project ra đã.. rùi mới chạy xem được...
Bạn nhấn F11 để Build cái Project đã Rồi nhấn F6 để chạy hen...
:D
Ồ vậy ah, thank bạn nha, để mình thử.
Ah bạn ơi mình làm thế nào để chọn cho form này chạy trước tiên, khi kick nút thì mới mở sang form kia.
Ví dụ chạy form đăng nhập đầu tiên, login vào thì mở form khác lên và hide form đăng nhập đi?
Bạn làm một cái Form chính. Tạo một cái CPanel trong đó..
Khi nào cần form nào thì add vô cái CPanel trong cái form chính đó hen...
Đoạn Code add như sau:
NewForm j = new NewForm();
_JPanel.removeAll();
_JPanel.add(j);
j.setBounds(0,0,800,600);
this.repaint(0,0,800,600);
Thân...
Mình đã tạo xong giao diện, tham khảo sách và viết xong code kết nối csdl access.
Các bạn cho mình hỏi cách tạo một form đăng nhập sử dụng csdl với, phải viết lệnh cho nút Login như thế nào ?
Bạn tạo giao diện khi chạy thì nó add form login vào...
Tạo một cái biến toàn cục, boolean để biết là login hay chưa
Sau dó làm cái form login, Button Login click thì check trong csdl xem nó có đúng với user và pass k?
Nếu đún thì vào form nào tùy bạn.. Không thì vào form báo lỗi...
Có 2 cách để chặn truy cập vào thanh menu của chương trình hay các form khác khi chưa login:
Một là disable, hai là khi add form thì check cái biến bool nếu chưa login thì add form báo lỗi đè lên.
Thân...
Nguyên lý thì mình hiểu cả, mình từng làm trên VB.NET rồi mà.
Chỉ là chuyển qua java thì... mình bó tay, đọc bao nhiêu tài liệu, nhưng chưa có cái mình cần. Mò mẫm kiểu này khó wa ta.
Bạn có demo mẫu ko cho mình tham khảo, học vẹt nhanh hơn, mình tự hiểu đc.
Đây là hàm mình viết cho button Login:
private void btnLoginActionPerformed(java.awt.event.ActionEvent evt)
String msg, title;
String full_password = "";
char [] password_char = pwdPass.getPassword();
full_password = String.valueOf(password_char);
//Kiểm tra Username
if (txtUser.getText().isEmpty()){
msg = "User Name can not left blank!";
title = "Error";
JOptionPane.showMessageDialog(this, msg, title, JOptionPane.ERROR_MESSAGE);
txtUser.requestFocus();
return;
}
//Kiểm tra pass
if (String.valueOf(pwdPass.getPassword()).isEmpty()){
msg = "Password can not left blank!";
title = "Error";
JOptionPane.showMessageDialog(this, msg, title, JOptionPane.ERROR_MESSAGE);
pwdPass.requestFocus();
return;
}
try {
rsLogin.beforeFirst(); //rsLogin là ResultSet
/*
Giả sử có bảng LoginInfo chứa User và Pass thì cái Resultset lấy như sau:
Statement stmt = school.firstForm.cnDetails.createStatement(ResultS et.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
rsLogin = stmt.executeQuery("SELECT * FROM LoginInfo");
*/
while(rsLogin.next()){
if (txtUser.getText().toString().compareTo(rsLogin.ge tString(1)) == 0 && full_password.compareTo(rsLogin.getString(2)) == 0){
school.firstForm.isLogin = true; //Đăng nhập thành công
school.firstForm.user = rsLogin.getString(1);
break;
}
}
//Add form cần thiết khi đã đăng nhập thành công
if (school.firstForm.isLogin){
firstjpanel j = new school.firstjpanel();
this.removeAll();
this.add(j);
j.setBounds(0,0,800,600);
this.repaint(0,0,800,600);
}else{
msg = "Wrong User or Password!";
title = "Error";
JOptionPane.showMessageDialog(this, msg, title, JOptionPane.ERROR_MESSAGE);
txtUser.selectAll();
txtUser.requestFocus();
return;
}
} catch (SQLException ex) {
ex.printStackTrace();
}
}
Thank bạn thật nhiều nhé :)
Tối đi học về mình sẽ thử, mình hỏi luôn là mình chép trong SGK code kết nối csdl thế này, mình viết vào voin main có sẵn. KO biết đúng và kết nối đc ko bạn?
Thank bạn :)Code:public static void main(String args[]) {
Connection connection = null;
if(args.length !=1) {
System.out.println("Syntax: Java Test Connection " + "DSN");
return;
}
try { //load driver
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
System.out.println("Loading the driver...");
}
catch(Exception e) { //problem load driver, class not exist
e.printStackTrace();
return;
}
try {
String dbURL = "jdbc:odbc:" + args[0];
System.out.println("Establishing connection...");
connection = DriverManager.getConnection(dbURL,"","");
System.out.println("Connect to " +connection.getCatalog()+ " successfully!");
//Do whatever queries or update you want here!!!
}
catch(SQLException e) {
e.printStackTrace();
}
finally {
if(connection != null) {
try {
connection.close();
}
catch (SQLException e) {
e.printStackTrace();
}
}
}
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new DangNhap().setVisible(true);
}
});
}
[=========> Bổ sung bài viết <=========]
Bạn ơi mình vừa ghép code bạn cho vào bài rồi.
Có mấy cái lỗi này, chắc cách đặt tên và kết nối csdl của bạn khác thì phải, lỗi mấy chỗ này bạn ạ.
Mình kết nối như thế này (chép sách giáo khoa ra). Chỉ mình với nha, thanks bạn.
Code:Connection connection = null;
if(args.length !=1) {
System.out.println("Syntax: Java Test Connection " + "DSN");
return;
}
try { //load driver
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
System.out.println("Loading the driver...");
}
catch(Exception e) { //problem load driver, class not exist
e.printStackTrace();
return;
}
try {
String dbURL = "jdbc:odbc:" + args[0];
System.out.println("Establishing connection...");
connection = DriverManager.getConnection(dbURL,"","");
System.out.println("Connect to " +connection.getCatalog()+ " successfully!");
//Do whatever queries or update you want here!!!
}
catch(SQLException e) {
e.printStackTrace();
}
finally {
if(connection != null) {
try {
connection.close();
}
catch (SQLException e) {
e.printStackTrace();
}
}
}
Đây là đoạn lỗi:
Lỗi mấy chữ rsLogin, shool, firstJpanel, user...
Code:try {
rsLogin.beforeFirst(); //rsLogin là ResultSet
/*
Có bảng login chứa Name và Pass thì cái Resultset lấy như sau:
Statement stmt = school.firstForm.cnDetails.createStatement(ResultS et.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
rsLogin = stmt.executeQuery("SELECT * FROM login");
*/
while(rsLogin.next()){
if (((txtname.getText().toString().compareTo(rsLogin.getString(1))) == 0) && ((full_password.compareTo(rsLogin.getString(2))) == 0)){
school.firstForm.isLogin = true; //Đăng nhập thành công
school.firstForm.user = rsLogin.getString(1);
break;
}
}
//Add form cần thiết khi đã đăng nhập thành công
if (school.firstForm.isLogin){
firstJpanel j = new school.firstJpanel();
this.removeAll();
this.add(j);
j.setBounds(0,0,800,600);
this.repaint(0,0,800,600);
}
[=========> Bổ sung bài viết <=========]
Mình khó hiểu nhất là cái school, nó là cái ji và đc khai báo ở đâu vậy?
Cái school bạn xóa đi hen.. do mình viết nguyên một cái Project cho trường học nên lấy vậy thôi... xóa đi k thành vấn đề.
Còn khi kết nối thì nhiêu đây là đủ rồi nè bạn:
PHP Code:
private Connection cnDetails = null;
private final String url = "jdbc:sqlserver://";
private final String serverName = "127.0.0.1";
private final String instanceName = "SQLExpress";
private final String databaseName = "dbName";
private String getConnectionUrl() {
return url + serverName + ";instanceName=" + instanceName + ";databaseName=" + databaseName + ";integratedSecurity=true;";
}
try{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
cnDetails = DriverManager.getConnection(getConnectionUrl());
if (cnDetails != null) System.out.println("Connection Successful!");
}catch (ClassNotFoundException ex){
ex.printStackTrace();
}catch (SQLException ex){
ex.printStackTrace();
}
thân...
Đây là toàn bộ code của form Bàn có khách: hiển thị các bàn đang có khách, cái này có trong csdl access, chỉ việc kết nối csdl và hiển thị lên table.
Mình ko thấy lỗi, chạy nhưng ko thấy hiển thị nội dung lên table.
Các bạn xem dùm nhé.
Code:package qlnhahang;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.SQLException;
import javax.swing.*;
import javax.swing.table.*;
public class BanCoKhach extends javax.swing.JFrame {
Connection conn = null;
Statement s = null;
ResultSet rs = null;
DefaultTableModel model;
String data[][]= {};
String columnNames[] = {"Ma_ban", "Ten_ban", "So_khach"};
public BanCoKhach() {
initComponents();
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
cmdthoat = new javax.swing.JButton();
jScrollPane1 = new javax.swing.JScrollPane();
tablebancokhach = new javax.swing.JTable();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("Ban Co Khach");
setName("frmbancokhach"); // NOI18N
cmdthoat.setFont(new java.awt.Font("Arial", 1, 14));
cmdthoat.setText("Thoát");
cmdthoat.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(255, 51, 0), 3));
tablebancokhach.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null},
{null, null, null},
{null, null, null},
{null, null, null}
},
new String [] {
"Ma_ban", "Ten_ban", "So_khach"
}
));
jScrollPane1.setViewportView(tablebancokhach);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 507, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
.addGap(408, 408, 408)
.addComponent(cmdthoat, javax.swing.GroupLayout.PREFERRED_SIZE, 127, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap(29, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(cmdthoat, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 401, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(43, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
public void databaseConnect() {
model = new DefaultTableModel(data,columnNames);
tablebancokhach = new JTable(model);
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException ce){
ce.printStackTrace();
}
try{
String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=csdlqlnhahang.mdb";
conn = DriverManager.getConnection(url,"lab","");
s = (Statement) conn.createStatement();
rs = s.executeQuery("SELECT * FROM bancokhach");
while(rs.next()) {
String chuoi[] = new String[5];
chuoi[0] = rs.getString(1);
chuoi[1] = rs.getString(2);
chuoi[2] = rs.getString(3);
chuoi[3] = rs.getString(4);
chuoi[4] = rs.getString(5);
model.addRow(chuoi);
}
conn.close();
}
catch (SQLException se) {
System.out.println("SQL Error: " + se.toString() + " "+ se.getErrorCode() + " " + se.getSQLState());
}
catch (Exception e) {
System.out.println("Error: " + e.toString()+ e.getMessage());
}
}
public static void main(String args[]) {
BanCoKhach ban = new BanCoKhach();
ban.databaseConnect();
ban.show();
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new BanCoKhach().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton cmdthoat;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable tablebancokhach;
// End of variables declaration
}