1.DB.java
2.BaseDao.java
3.兩個(gè)窗體
1. DB.java
完整代碼
package dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DB {
static{
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static Connection getConn() throws SQLException{
return DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/shangpin?characterEncoding=utf-8",
"root", "1234");
}
public static void closeAll(Connection conn){
if(conn !=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) throws SQLException {
System.out.println(getConn());
}
}
2. BaseDao.java
完整代碼
package dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class BaseDao {
static Connection conn;
static PreparedStatement pst;
static ResultSet rs;
// 查詢
public static ResultSet cx(String sql) {
try {
conn = DB.getConn();
pst = conn.prepareStatement(sql);
rs = pst.executeQuery();
} catch (SQLException e) {
e.printStackTrace();
}
return rs;
}
// 增刪改
public static boolean zsg(String sql) {
try {
conn = DB.getConn();
pst = conn.prepareStatement(sql);
return pst.executeUpdate() > 0;
} catch (SQLException e) {
e.printStackTrace();
} finally {
DB.closeAll(conn);
}
return false;
}
}
3. 兩個(gè)窗體中的部分代碼:
① 程序一開始執(zhí)行時(shí),需要加載顯示數(shù)據(jù):
主窗體中-修改構(gòu)造器中的代碼
/** 修改構(gòu)造器,增加添加調(diào)用語(yǔ)句 */
public ZhuYe() {
initComponents();
//在構(gòu)造器中增加調(diào)用初始表格的方法
initTable("select * from tb_goods");
}
② 定義初始化表格的方法:
主窗體中-完整代碼
//初始化表格的方法
private void initTable(String sql) {
//1.準(zhǔn)備好所有的數(shù)據(jù),放入 data 中
Vector data = new Vector();
ResultSet rs = BaseDao.cx(sql); //查詢數(shù)據(jù)庫(kù)
try {
while (rs.next()) {
Vector line = new Vector(); // line 代表存放一行數(shù)據(jù)的集合
int id = rs.getInt("goodId");
String name = rs.getString("goodName");
int num = rs.getInt(3);
double pric = rs.getDouble(4);
line.add(id);
line.add(name);
line.add(num);
line.add(pric);
data.add(line); //將當(dāng)前行存入大的data中
}
} catch (SQLException e) {
e.printStackTrace();
}
//2.準(zhǔn)備好標(biāo)題文字,放入 bt 中
Vector bt = new Vector(); //bt 用于存放標(biāo)題
bt.add("商品編號(hào)");
bt.add("商品名字");
bt.add("商品數(shù)量");
bt.add("商品價(jià)格");
//3.最終任務(wù)就是用上面準(zhǔn)備好的 數(shù)據(jù) 和 標(biāo)題 填充 表格
jTable1.setModel(new DefaultTableModel(data, bt));
}
③ 點(diǎn)擊查詢按鈕時(shí)的操作—模糊查詢:
完整代碼-在主窗體中編寫
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// 點(diǎn)擊查詢按鈕要完成的工作:
//1.獲取文本框的內(nèi)容
String text = wbk.getText();
//2.拼接出一個(gè)模糊查詢的sql語(yǔ)句
//select * from tb_goods where goodName like '%鼠標(biāo)%'
String sql = "select * from tb_goods where goodName like '%" + text + "%'";
//3.調(diào)用初始化表格的方法
initTable(sql);
}
④ 實(shí)現(xiàn)刪除按鈕的功能:
完整代碼-在主窗體中編寫
/* 點(diǎn)擊刪除按鈕時(shí):
* 1.判斷是否選中了某一行,如果沒(méi)選中,則給出提示:"您未選擇任何數(shù)據(jù)"
* 2.如果選中了某一行,則給出確認(rèn)提示以防止誤刪除,"您確定要?jiǎng)h除嗎?",點(diǎn)擊確定返回0,點(diǎn)擊取消返回1。
* 3.執(zhí)行刪除:找到對(duì)應(yīng)的行號(hào)---獲取id---根據(jù)id組裝sql語(yǔ)句---執(zhí)行刪除
* */
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
int rowCount = jTable1.getSelectedRowCount(); //獲取選中的行數(shù),如果為0,則說(shuō)明沒(méi)有選中任何行
if (rowCount == 0) {
JOptionPane.showMessageDialog(null, "您未選擇任何數(shù)據(jù)");
} else {
int isOk = JOptionPane.showConfirmDialog(null, "您確定要?jiǎng)h除嗎?", "刪除確認(rèn)",
JOptionPane.YES_NO_OPTION);
// System.out.println(isOk);
if (isOk == 0) { //如果值是 0 ,說(shuō)明點(diǎn)擊了確定要?jiǎng)h除
int selectedRow = jTable1.getSelectedRow(); //獲取選中行的索引
int id = (Integer) jTable1.getModel()
.getValueAt(selectedRow, 0); //找到要?jiǎng)h除的行的第一列,其實(shí)就是要?jiǎng)h除的商品的編號(hào)
String sql = "delete from tb_goods where goodid=" + id; //拿到商品編號(hào)后,組裝出刪除的sql語(yǔ)句
boolean zsg = BaseDao.zsg(sql); //執(zhí)行刪除操作,并返回是否成功
if (zsg) {
JOptionPane.showMessageDialog(null, "刪除成功!");
//刪除后,調(diào)用表格初始化的方法,重新加載數(shù)據(jù),使表格加載顯示最新數(shù)據(jù):
initTable("select * from tb_goods");
} else {
JOptionPane.showMessageDialog(null, "刪除失??!");
}
}
}
}
⑤ 新增商品(在新增商品窗體中的 新增按鈕上編寫)
新增商品中
注意:新增完成后,返回主界面,自動(dòng)刷新主界面數(shù)據(jù),需要修改前面的代碼
完整代碼-在新增商品窗體中編寫
// 新增商品的處理過(guò)程:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// 1. 獲取所有文本框的數(shù)據(jù)
String idtext = tx1.getText().trim(); //tx1是第一個(gè)文本框的名字(改名了)
String name = tx2.getText().trim();
String numtext = tx3.getText().trim();
String pricetext = tx4.getText().trim();
//2.如果有沒(méi)填寫的文本框,則給出提示
if ("".equals(idtext) || "".equals(name) || "".equals(numtext)
|| "".equals(pricetext)) {
JOptionPane.showMessageDialog(null, "請(qǐng)錄入完整信息!");
}
//3.如果所有的文本框都填寫了,則進(jìn)行插入操作:
else {
//準(zhǔn)備并拼裝新增sql語(yǔ)句,首先將文本框獲取到的字符串 轉(zhuǎn)換為數(shù)據(jù)庫(kù)表中相對(duì)應(yīng)的數(shù)據(jù)類型
int id = Integer.parseInt(idtext);
int num = Integer.parseInt(numtext);
double pri = Double.parseDouble(pricetext);
//拼裝sql新增語(yǔ)句:
String sql = String.format("insert into tb_goods values(%d,'%s',%d,%f)", id, name,num, pri);
if (BaseDao.zsg(sql)) { //真正的執(zhí)行,并根據(jù)返回結(jié)果給出提示
JOptionPane.showMessageDialog(null, "新增商品成功!");
// this.setVisible(false); //隱藏當(dāng)前窗體
this.dispose(); // 銷毀擋墻窗體
// 下面這一行是,自動(dòng)刷新主頁(yè)面,重新加載數(shù)據(jù)(根據(jù)考試要求進(jìn)行編寫,還需要修改其他地方,詳見后面的**備注**)
// 注意:在主窗體中的 initTable 方法定義,需要由 private 改為 public,否則無(wú)法訪問(wèn)?。?/span>
// mp.initTable("SELECT * FROM tb_goods"); //mp:為主頁(yè)窗體對(duì)象,在前面進(jìn)行了定義。**詳細(xì)在下面描述**
}
else{
JOptionPane.showMessageDialog(null, "新增商品失敗!");
}
}
}
以下內(nèi)容自行選擇查看閱讀,跟添加商品后,刷新加載主頁(yè)數(shù)據(jù)有關(guān)。(可先掌握以上內(nèi)容,上面內(nèi)容熟練后,再練習(xí)下面內(nèi)容)
備注:要實(shí)現(xiàn)新增完成后,自動(dòng)刷新主窗體的功能,需要修改的地方:
①新增商品窗體中:
在新增窗體的頂部編寫代碼。聲明定義一個(gè)主窗體的變量,用于接受主窗體對(duì)象;創(chuàng)建一個(gè)帶參的構(gòu)造器,用于在主窗體創(chuàng)建新增窗體對(duì)象,并傳參
核心代碼-在新增窗體中編寫:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-497081.html
public class Add extends javax.swing.JFrame {
//聲明一個(gè)主窗體類型的屬性
MainPage mp;
/** Creates new form Add */
public Add() {
initComponents();
}
//寫一個(gè)帶參數(shù)的構(gòu)造器,給上面聲明的主窗類型的變量體賦值
public Add(MainPage mp) {
initComponents();
this.mp = mp; //給上面聲明的主窗類型的變量體賦值
}
②主窗體中:
在主窗體中編寫代碼。當(dāng)點(diǎn)擊新增商品按鈕,打開新增商品窗體時(shí),將本窗體窗體給新增商品窗體
完整代碼-在主窗體中編寫文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-497081.html
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
//將本窗體(主窗體)this 作為參數(shù),傳遞給 添加商品的窗體,以便添加完商品后操作主窗體更新數(shù)據(jù)
Add add = new Add(this);
add.setVisible(true);
}
到了這里,關(guān)于Java桌面程序:加載數(shù)據(jù)-模糊查詢-刪除-新增的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!