數(shù)據(jù)庫課設(shè)--電商系統(tǒng)筆記

1. 在jdbc中有3種執(zhí)行sql的語句分別是execute禁悠,executeQuery和executeUpdate

1.execute執(zhí)行增刪改查操作
execute返回的結(jié)果是個(gè)boolean型免钻,當(dāng)返回的是true的時(shí)候粱檀,表明有ResultSet結(jié)果集树枫,通常是執(zhí)行了select操作戚啥,當(dāng)返回的是false時(shí)袒啼,通常是執(zhí)行了insert年叮、update具被、delete等操作。execute通常用于執(zhí)行不明確的sql語句只损。

  1. executeQuery執(zhí)行查詢操作
    executeQuery返回的是ResultSet結(jié)果集一姿,通常是執(zhí)行了select操作。


    image.png
  2. executeUpdate執(zhí)行增刪改操作
    executeUpdate返回的是int型跃惫,表明受影響的行數(shù)叮叹,通常是執(zhí)行了insert、update辈挂、delete等操作衬横。

2. navicat自增報(bào)錯(cuò)


先把外鍵刪了,再自增

3. 帶參數(shù)的java數(shù)據(jù)庫增刪查改

public int save(User user) throws SQLException {
String sql = "insert into user values(0,?,?,?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, user.getName());
pstmt.setString(2, user.getTele());
pstmt.setDate(3, user.getBirthday());
int n = pstmt.executeUpdate();
pstmt.close();
return n;
}
public int delete(User user) throws SQLException{
String sql = "delete from user where id = "+user.getId();
Statement stmt = conn.createStatement();
int n = stmt.executeUpdate(sql);
stmt.close();
return n;
}
public int update(User user) throws SQLException{
String sql = "update user set name=?, tele=?, birthday=? where id = "+user.getId();
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(2, user.getName());
pstmt.setString(3, user.getTele());
pstmt.setDate(4, user.getBirthday());
int n = pstmt.executeUpdate(sql);
pstmt.close();
return n;
}
public User getUser(Integer id) throws SQLException{
String sql = "select * from user where id = " + id;
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
User user = getUserFromResultSet(rs);
rs.close();
stmt.close();
return user;
}

4.java.sql.SQLException: Before start of result set異常及處理辦法

解決方法:使用rs.getString();前一定要加上rs.next();

原因:ResultSet對(duì)象代表SQL語句執(zhí)行的結(jié)果集终蒂,維護(hù)指向其當(dāng)前數(shù)據(jù)行的光標(biāo)蜂林。每調(diào)用一次next()方法遥诉,光標(biāo)向下移動(dòng)一行。最初它位于第一行之前噪叙,因此第一次調(diào)用next()應(yīng)把光標(biāo)置于第一行上矮锈,使它成為當(dāng)前行。隨著每次調(diào)用next()將導(dǎo)致光標(biāo)向下移動(dòng)一行睁蕾。在ResultSe對(duì)象及其t父輩Statement對(duì)象關(guān)閉之前苞笨,光標(biāo)一直保持有效。

5. java窗口跳轉(zhuǎn)不了

image.png

image.png

解決子眶;


image.png

6. Unknown column '' in 'field list'報(bào)錯(cuò)及解決

image.png


將代碼修改為使用 pstmt.set瀑凝?傳參給sql語句

image.png

7. 實(shí)現(xiàn)jtable更新

使用使用TableModel的方式存放Table需要顯示的數(shù)據(jù)
TableModel 繼承AbstractTableModel ,進(jìn)而實(shí)現(xiàn)了接口TableModel
在TableModel 中提供一個(gè)table顯示需要的所有信息

  1. getRowCount 返回一共有多少行
  2. getColumnCount 返回一共有多少列
  3. getColumnName 每一列的名字
  4. isCellEditable 單元格是否可以修改
  5. getValueAt 每一個(gè)單元格里的值
    我的tablemodel
public class MbussinessG extends AbstractTableModel{
    private static Integer bid = 0;
    static List<goods> g ;
    private static myutil dbUtil = new myutil();
    String[] columnNames = new String[] {  "Name", "Detatil", "Image" ,"price"};

    
     public MbussinessG(bussiness myBussiness) throws Exception{    
          bid = myBussiness.getID();//獲取商家ID    
          g = showallgoods(bid);
     }
     
    
     @Override
        public int getColumnCount() {
            // TODO Auto-generated method stub
         return columnNames.length;
        }

    @Override
    public int getRowCount() {
        // TODO Auto-generated method stub
        return g.size();
    }

    @Override
    public String getColumnName(int columnIndex) {
        // TODO Auto-generated method stub
        return columnNames[columnIndex];
    }
    @Override
    public boolean isCellEditable(int rowIndex, int columnIndex) {
        return false;
    }
      public Object getValueAt(int rowIndex, int columnIndex) {
            // TODO Auto-generated method stub
          goods result = g.get(rowIndex);
          if (columnIndex == 0)
              return result.getGoodsName();
            else if (columnIndex == 1)
                return result.getGoodsDetail();
            else if (columnIndex == 2)
                return result.getGoodsImg();
            else if (columnIndex == 3)
                 return result.getPrice();
           
         return null;
        }


    public static void main(String[] args, bussiness myBussiness) throws Exception {
           new MbussinessG(myBussiness);
         
           
        }
    
     //獲取發(fā)布的所有商品
    
        public static List<goods> showallgoods(Integer bid) throws Exception {
            
            String sql = null;
            sql = "select * from products where status='1' and b_id=?";//默認(rèn)status設(shè)為1臭杰,為上線
            Connection con = dbUtil.getCon();
            PreparedStatement pstmt = con.prepareStatement(sql);
             pstmt.setInt(1, bid);
            ResultSet rs=pstmt.executeQuery();     //將sql語句傳至數(shù)據(jù)庫粤咪,返回的值為一個(gè)字符集用一個(gè)變量接收 
            
            List<goods> result = new ArrayList<goods>();
            
            while(rs.next()){    //next()獲取里面的內(nèi)容
                 Integer gid = rs.getInt("p_id");
                 String gname =rs.getString("p_name");
                 String gdetail = rs.getString("detail");
                 String gimage = rs.getString("main_image");
                 float gprice = rs.getFloat("price");
                result.add(new goods(gname, gdetail,gimage, gprice));
                
            }                   
            return result;
        }   

}

使用tablemodel(關(guān)鍵部分代碼)

  
            //我的商品jp3
             MbussinessG htm = new  MbussinessG(myBussiness);
             //根據(jù) TableModel來創(chuàng)建 Table
             JTable t = new JTable(htm);
             JScrollPane jp3 = new JScrollPane(t);
           tabbedPane.addTab("我的商品",jp3);

需要更新的時(shí)候,比如我是發(fā)布商品后需要更新我的商品table

 MbussinessG.g = showallgoods(bid);//更新tablemodel的數(shù)據(jù)
 t.updateUI();//更新ui

8.sql語句報(bào)錯(cuò)

sql語句沒錯(cuò)渴杆,發(fā)現(xiàn)是表名取了order是數(shù)據(jù)庫關(guān)鍵字所以報(bào)錯(cuò)寥枝!摔杯子!

9.sql語句磁奖,兩個(gè)表連接錯(cuò)誤

兩個(gè)表連接的公共屬性囊拜,必須是其中一個(gè)表的主鍵:)

終于寫好啦!1却睢9邗巍!8冶纭蔽莱!開心5芙F莩ぁ!我也會(huì)寫java啦啦啦啦5√ΑM!柑司!雖然功能簡(jiǎn)單界面丑陋但還是很開心哈哈迫肖!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市攒驰,隨后出現(xiàn)的幾起案子蟆湖,更是在濱河造成了極大的恐慌,老刑警劉巖玻粪,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件隅津,死亡現(xiàn)場(chǎng)離奇詭異诬垂,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)伦仍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門结窘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人充蓝,你說我怎么就攤上這事隧枫。” “怎么了谓苟?”我有些...
    開封第一講書人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵官脓,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我涝焙,道長(zhǎng)确买,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任纱皆,我火速辦了婚禮湾趾,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘派草。我一直安慰自己搀缠,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開白布近迁。 她就那樣靜靜地躺著艺普,像睡著了一般。 火紅的嫁衣襯著肌膚如雪鉴竭。 梳的紋絲不亂的頭發(fā)上歧譬,一...
    開封第一講書人閱讀 49,950評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音搏存,去河邊找鬼瑰步。 笑死,一個(gè)胖子當(dāng)著我的面吹牛璧眠,可吹牛的內(nèi)容都是我干的缩焦。 我是一名探鬼主播,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼责静,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼袁滥!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起灾螃,我...
    開封第一講書人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤题翻,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后腰鬼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嵌赠,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡靴拱,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了猾普。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片袜炕。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖初家,靈堂內(nèi)的尸體忽然破棺而出偎窘,到底是詐尸還是另有隱情,我是刑警寧澤溜在,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布陌知,位于F島的核電站,受9級(jí)特大地震影響掖肋,放射性物質(zhì)發(fā)生泄漏仆葡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一志笼、第九天 我趴在偏房一處隱蔽的房頂上張望沿盅。 院中可真熱鬧,春花似錦纫溃、人聲如沸腰涧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽窖铡。三九已至,卻和暖如春坊谁,著一層夾襖步出監(jiān)牢的瞬間费彼,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工口芍, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留箍铲,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓阶界,卻偏偏與公主長(zhǎng)得像虹钮,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子膘融,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350