MySQL資料庫與登入註冊
阿新 • • 發佈:2018-12-31
資料庫
資料庫中增刪改查
CREATE DATABASE clazz
CREATE TABLE student(id int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,stu_name varchar(30) NOT NULL,sex int(1),age int(3))
insert into student(stu_name,sex,age)value('張三',1,0)
insert into student(stu_name,sex,age)value('李四',1,22)
insert into student(stu_name,sex,age)value('王五' ,0,23)
update student set age=20,sex=0 where stu_name='張三'
select stu_name from student where age>20
select * from student
delete from student where stu_name ='李四'
delete from student where stu_name ='褚文斌'
insert into student(stu_name,sex,age)value('李海猛',0,23)
java連線資料庫實現增刪改查
try {
Class.forName(driver);//載入驅動
//與資料庫建立連線
Connection conn=DriverManager.getConnection(url, user, password);
if(!conn.isClosed()){
//建立statement物件
Statement state=conn.createStatement();
//增
String insert="insert into student(stu_name,sex,age)values('旺財',1,23)" ;
//改
String update ="update student set age=20 where stu_name='李四'";
//刪
String delete="delete from student where stu_name='李四'";
//state.execute(insert);增刪改
//查
String select="select *from student";
//ResultSet 物件具有指向其當前資料行的游標。最初,
//游標被置於第一行之前。next 方法將游標移動到下一行;
//因為該方法在 ResultSet 物件沒有下一行時返回 false,
//所以可以在 while 迴圈中使用它來迭代結果集。
ResultSet set=state.executeQuery(select);
set.first();
while(!set.isAfterLast()){
String name =set.getString("stu_name");
System.out.println(name);
set.next();
}
}else{
}
單例設計模式
/**
*
* @author單例設計模式
* 1私有構造器
* 2靜態公開的方法
* 3私有靜態的屬性
* 4方法加執行緒鎖
*
*/
public class SQLManager {
private Statement statement;
//私有靜態的屬性
private static SQLManager manager;
//靜態公開的方法
public static synchronized SQLManager newInstance() {
if (manager == null) {
manager = new SQLManager();
}
return manager;
}
//私有構造器
private SQLManager() {
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/clazz";
String user = "root";
String password = "123456";
try {
Class.forName(driver);// 載入驅動
// 與資料庫建立連線
Connection conn = DriverManager.getConnection(url, user, password);
if (!conn.isClosed()) {
// 建立statement物件
Statement state = conn.createStatement();
// 增
String insert = "insert into student(stu_name,sex,age)values('旺財',1,23)";
// 改
String update = "update student set age=20 where stu_name='李四'";
// 刪
String delete = "delete from student where stu_name='李四'";
// state.execute(insert);增刪改
// 查
String select = "select *from student";
// ResultSet 物件具有指向其當前資料行的游標。最初,
// 游標被置於第一行之前。next 方法將游標移動到下一行;
// 因為該方法在 ResultSet 物件沒有下一行時返回 false,
// 所以可以在 while 迴圈中使用它來迭代結果集。
ResultSet set = state.executeQuery(select);
set.first();
while (!set.isAfterLast()) {
String name = set.getString("stu_name");
System.out.println(name);
set.next();
}
} else {
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
註冊
public void actionPerformed(ActionEvent arg0) {
String userName=textFieldUserName.getText();
String password=textFieldPassword.getText();
Statement state=SQLManager.newInstance().getStatement();
//查詢
String sql="select * from user where userName='"+userName+"'";
try {
ResultSet set=state.executeQuery(sql);
set.last();//遊標移動到最後一行
int num =set.getRow();
System.out.println(num);
if(num>0){
System.out.println("該使用者已存在");
}else{//查詢沒有然後註冊
String register ="insert into user(userName,password)values('"+userName+"','"+password+"') ";
state.executeQuery(register);
System.out.println("註冊成功");
}
登入
public void actionPerformed(ActionEvent e) {
String userName=textFieldUserName.getText();
String password=textFieldpassword.getText();
Statement state=SQLManager.newInstance().getStatement();
String select="select *from user where userName='"+userName+"'and '"+password+"'";
try {
ResultSet set=state.executeQuery(select);
set.last();
int num=set.getRow();
System.out.println(num);
if(num==1){
System.out.println("存在此使用者,跳轉");
}else{
System.out.println("請先註冊");
}
} catch (SQLException e1) {
e1.printStackTrace();
}
}
});