版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
數(shù)據(jù)庫原理網(wǎng)上授課平臺(tái)(二)
第6章系統(tǒng)詳細(xì)設(shè)計(jì)
6.1數(shù)據(jù)庫連接實(shí)現(xiàn)業(yè)務(wù)邏輯層與數(shù)據(jù)庫的連接是通過JDBC技術(shù),它是“JavaDatabaseConnectivity”的縮寫。JDBC由一組用Java語言編寫的接口和類組成,是對(duì)數(shù)據(jù)庫操作的對(duì)象封裝,可以實(shí)現(xiàn)與數(shù)據(jù)庫的無關(guān)性。它以成為一種供數(shù)據(jù)庫開發(fā)者使用的標(biāo)準(zhǔn)API。6.1.1JDBC的基本功能
a.建立與數(shù)據(jù)庫的連接。b.發(fā)送SQL語言。c.處理數(shù)據(jù)庫操作結(jié)果。6.1.2JDBC的特點(diǎn)
a.與SQL語言的一致性。它允許使用從屬于任何DBMS的SQL語言;提供ODBC風(fēng)格的轉(zhuǎn)義語句;利用DatabaseMetaData接口提供關(guān)于DBMS的描述性信息,從而使應(yīng)用程序能適應(yīng)每個(gè)DBMS。b.可在現(xiàn)有數(shù)據(jù)庫上實(shí)現(xiàn)。c.提供與其它Java系統(tǒng)一致的界面。這說明開發(fā)人員可以采用一致的編程界面來處理數(shù)據(jù)庫編程。d.簡單化。e.使用靜態(tài)的通用數(shù)據(jù)類型。f.多方法,多功能。6.1.3JDBC的驅(qū)動(dòng)類型:
a.JDBC-ODBC橋驅(qū)動(dòng)程序。b.調(diào)用本地?cái)?shù)據(jù)庫應(yīng)用編程接口驅(qū)動(dòng)程序。c.數(shù)據(jù)庫中間件純Java驅(qū)動(dòng)程序。d.直接連接數(shù)據(jù)庫的純Java驅(qū)動(dòng)程序。6.1.4將連接數(shù)據(jù)庫的代碼封裝在一個(gè)JavaBean中DBconn.java代碼如下:packagecom.soul.struts.tool;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;publicclassDBconn{privateStringdriver="sun.jdbc.odbc.JdbcOdbcDriver";//數(shù)據(jù)庫的驅(qū)動(dòng)privateStringurl="jdbc:odbc:mydb";//URL地址privateConnectionconn=null;//無參構(gòu)造器,利用它來加載數(shù)據(jù)庫連接對(duì)象publicDBconn(){try{Class.forName(driver);//加載數(shù)據(jù)庫驅(qū)動(dòng)conn=DriverManager.getConnection(url);//加載數(shù)據(jù)庫連接對(duì)象}catch(Exceptione){System.out.println("數(shù)據(jù)庫加載失敗");}}publicConnectiongetConn(){returnconn;}//關(guān)閉數(shù)據(jù)庫結(jié)果集publicstaticvoidcloseRs(ResultSetrs){try{if(rs!=null){System.out.println("關(guān)閉數(shù)庫結(jié)果集");rs.close();rs=null;}}catch(SQLExceptione){e.printStackTrace();}}//關(guān)閉數(shù)據(jù)庫操作對(duì)象publicstaticvoidclosePstmt(PreparedStatementpstmt){try{if(pstmt!=null){System.out.println("關(guān)閉數(shù)庫操作對(duì)象");pstmt.close();pstmt=null;}}catch(SQLExceptione){e.printStackTrace();}}//關(guān)閉數(shù)庫連接對(duì)象publicstaticvoidcloseConn(Connectionconn){try{if(conn!=null){System.out.println("關(guān)閉數(shù)庫連接對(duì)象");conn.close();conn=null;}}catch(SQLExceptione){e.printStackTrace();}}}6.2系統(tǒng)功能模塊的設(shè)計(jì)與實(shí)現(xiàn)6.2.1用戶注冊模塊
當(dāng)用戶提出注冊請(qǐng)求,系統(tǒng)顯示用戶注冊頁面,提示用戶輸入個(gè)人信息,用戶輸入個(gè)人信息,系統(tǒng)驗(yàn)證其信息是否符合要求,如果用戶輸入的個(gè)人信息不符合系統(tǒng)要求,則系統(tǒng)顯示錯(cuò)誤信息并要求用戶重新填寫個(gè)人信息,用戶重新填寫信息,或者取消注冊,注冊成功系統(tǒng)將用戶信息寫入數(shù)據(jù)庫,頁面將經(jīng)一個(gè)顯示注冊成功的頁自動(dòng)進(jìn)入登錄界面。如下圖6-1所示:圖6-1用戶注冊頁面要實(shí)現(xiàn)用戶信息驗(yàn)證功能,主要是通過客戶端頁面上的JavaScript和服務(wù)器端驗(yàn)證,例如驗(yàn)證用戶輸入的用戶名在數(shù)據(jù)庫中是否已存在,如果已存在則在提交的時(shí)候會(huì)給出提示“用戶名已存在”,就要求重新注冊??蛻舳隧撁嫔系膉avascript代碼如下:<Scriptlanguage="javascript">functioncheckEmpty(form){for(i=0;i<form.length;i++){if(form.elements[i].value==""){alert("表單信息不能為空!!!");form.elements[i].focus();returnfalse;}}if(form.user_password.value!=form.user_password1.value){alert("兩次輸入的密碼不一致,請(qǐng)重新輸入!!!");form.user_password.focus();returnfalse;}if(form.user_name.value.length<1){alert("用戶名要在1-20個(gè)字符之間!");form.user_name.focus();returnfalse;}varpattern=/^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/;if(!pattern.exec(form.email.value)){alert("郵箱格式錯(cuò)誤??!");returnfalse;}}</Script>在服務(wù)器端驗(yàn)證時(shí),RegisterAction調(diào)用RegisterManager類中的addUser方法.addUser會(huì)先調(diào)同類中的hasUser方法來驗(yàn)證用戶是否已存在。關(guān)鍵代碼如下:publicbooleanhasUser(Stringuser_name)throwsException{Connectionconn=null;DBconndb=newDBconn();PreparedStatementpstmt=null;ResultSetrs=null;try{conn=db.getConn();pstmt=conn.prepareStatement(Sql.registCheck_tb_user);pstmt.setString(1,user_name);rs=pstmt.executeQuery();rs.next();intn=rs.getInt(1);if(n==1){System.out.print("用戶名存在,返回true");returntrue;}else{System.out.print("用戶名不存在,返回false");returnfalse;}}catch(SQLExceptione){e.printStackTrace();throwe;}finally{DBconn.closeRs(rs);DBconn.closePstmt(pstmt);DBconn.closeConn(conn);}}6.2.2登錄模塊
在登錄模塊中分為教師登錄和學(xué)生登錄,只有輸入正確的用戶名和密碼才能進(jìn)入系統(tǒng)。在登錄發(fā)生錯(cuò)誤時(shí)會(huì)出現(xiàn)相關(guān)的提示信息,如用戶名或密碼錯(cuò)誤。當(dāng)教師登錄成功后進(jìn)入主頁可以進(jìn)行電子教案管理,視頻管理,作業(yè)管理,在線答疑,留言管理等相關(guān)的操作。學(xué)生登錄成功后進(jìn)入主頁可以查看,下載電子教案和視頻,在線向教師提問,上傳作業(yè)等相關(guān)操作。用戶登錄模塊是系統(tǒng)的入口,用戶登錄模塊應(yīng)具有以下功能:獲得用戶權(quán)限。登錄模塊做為系統(tǒng)的入口,需要對(duì)權(quán)限進(jìn)行控制。不同身份登錄獲的不同的使用權(quán)。本系統(tǒng)分為教師用戶和學(xué)生用戶兩種權(quán)限。教師用戶登錄后可以進(jìn)行電子教案管理,視頻管理,作業(yè)管理,在線答疑,留言管理等相關(guān)的操作;學(xué)生用戶登錄成功后可以查看,下載電子教案和視頻,在線向教師提問,上傳作業(yè)等相關(guān)操作。網(wǎng)站首頁默認(rèn)為學(xué)生用戶登錄頁面。教師用戶登錄可以點(diǎn)頁面中的“教師登錄”進(jìn)入教師登錄頁面。驗(yàn)證用戶的用戶名和密碼。系統(tǒng)在登錄過程中必須輸入其正確的用戶名和密碼,登錄模塊會(huì)對(duì)其進(jìn)行核對(duì)。如果用戶的用戶名或密碼錯(cuò)誤則提示信息“用戶名或密碼錯(cuò)誤”并返回用戶登錄界面。為實(shí)現(xiàn)學(xué)生登錄功能,要根據(jù)用戶輸入的用戶名和密碼判斷是否是合法用戶。于是創(chuàng)建一個(gè)LoginAction類。調(diào)用UserManager類中的validate(Stringname,Stringpassword)方法:publicbooleanvalidate(Stringname,Stringpassword)throwsException{Connectionconn=null;DBconndb=newDBconn();PreparedStatementpstmt=null;ResultSetrs=null;try{conn=db.getConn();pstmt=conn.prepareStatement(Sql.login_tb_user);pstmt.setString(1,name);pstmt.setString(2,password);rs=pstmt.executeQuery();rs.next();intn=rs.getInt(1);if(n==1){returntrue;}else{returnfalse;}}catch(SQLExceptione){e.printStackTrace();throwe;}finally{db.closeRs(rs);db.closePstmt(pstmt);db.closeConn(conn);}}本系統(tǒng)的教師登錄模塊采用了固定的用戶名和密碼。為實(shí)現(xiàn)它,我創(chuàng)建了一個(gè)AdminLoginAction類,調(diào)用AdminManager類中的方法:publicbooleanvalidate(Stringname,Stringpassword){if(("admin".equals(name))&&("admin".equals(password))){System.out.print("正確!");returntrue;}else{System.out.print("錯(cuò)了");returnfalse;}}如果教師輸入的用戶名或密碼有誤則會(huì)有提示:"用戶名或密碼不匹配,請(qǐng)重新登錄!"接著頁面會(huì)跳到教師登錄頁面。鑒于對(duì)系統(tǒng)安全的考慮,用戶使用系統(tǒng)必須先到登錄頁面進(jìn)行身份驗(yàn)證,通過登錄窗口用戶輸入用戶名和密碼,只有輸入正確的用戶名和密碼后用戶才能進(jìn)入系統(tǒng)。下圖頁面是學(xué)生登錄的首頁如圖6-2:圖6-2用戶登錄頁面教師登錄頁面如圖6-3所示:圖6-3教師登錄頁面6.2.3電子教案管理模塊
a.電子教案管理模塊分為學(xué)生用戶主頁的電子教案管理和教師用戶主頁的電子教案管理。教師成功登錄后,在教師用戶主頁中的電子教案管理模塊,教師可以上傳新電子教案,也可以刪除以前傳過的舊電子教案。點(diǎn)擊“上傳電子教案”就會(huì)進(jìn)入到電子教案上傳的頁面,教師點(diǎn)擊“瀏覽”選擇要上傳的電子教案,然后點(diǎn)上傳就完成了一個(gè)電子教案的上傳。創(chuàng)建了一個(gè)繼承于DispatchAction的UpLoadAction類,該類用于上傳和下載文件。關(guān)鍵代碼如下:UpLoadFormuploadFile=(UpLoadForm)form;FormFilefile=uploadFile.getFile();StringuuidName=UUID.randomUUID().toString();Stringkejian_Name=uuidName+file.getFileName();Stringkejian_Time=uploadFile.getKejian_Time();ServletContextservletContext=this.getServlet().getServletContext();Stringpath=servletContext.getRealPath("");FileOutputStreamout=newFileOutputStream(path+"/uploadC/"+kejian_Name);out.write(file.getFileData());out.flush();out.close();UpLoadManagerulm=newUpLoadManager();booleanflag=ulm.kejianAdd(video_Name,video_Time);if(flag){request.setAttribute("currentTime",newDate());request.setAttribute("upload","success");retur,,nmapping.findForward("upload");}request.setAttribute("upload","fail");returnmapping.findForward("AuploadC");path表示得到當(dāng)前項(xiàng)目下webRoot的路徑,為了保存視頻,在webRoot下建立了一個(gè)名為uploadV的文件夾,考慮到一處編寫到處運(yùn)行的java語言初衷,把視頻保存在tomcat服務(wù)器下.代碼中的FormFile類,是映射上傳文件的,對(duì)你上傳的文件進(jìn)行操作,可以取得文件的名字,文件的內(nèi)容等。由于怕上傳的電子教案的名的字會(huì)相同,于是用個(gè)UUID類。用UUID.randomUUID()給文件名加一個(gè)隨機(jī)的32位的不會(huì)重復(fù)的數(shù)字。上傳成功的電子教案會(huì)存在服務(wù)器的uploadC文件夾中。教師上傳電子教案頁面如圖6-4所示:圖6-4教師上傳電子教案圖c.
學(xué)生用戶成功登錄后,可點(diǎn)擊“下載電子教案”查看電子教案,選擇想要下載的電子教案點(diǎn)擊“下載”。學(xué)生下載電子教案頁面如圖6-5所示:圖6-5學(xué)生下載電子教案頁面6.2.4公告管理模塊
站內(nèi)公告管理小模塊主要功能是管理站內(nèi)公告,教師可通過公告管理模塊向?qū)W生們發(fā)布通知,也可以刪除通知。這是一個(gè)小模塊,因此創(chuàng)建Back_NoteAction類調(diào)用NoteManager類中的add()方法向數(shù)據(jù)庫中添加公告內(nèi)容:publicbooleanadd(Stringnote_title,Stringnote_content,Stringnote_time)throwsException{Connectionconn=null;DBconndb=newDBconn();PreparedStatementpstmt=null;try{conn=db.getConn();pstmt=conn.prepareStatement(Sql.add_tb_note);pstmt.setString(1,note_title);pstmt.setString(2,note_content);pstmt.setString(3,note_time);intn=pstmt.executeUpdate();if(n==1){returntrue;}else{returnfalse;}}catch(SQLExceptione){e.printStackTrace();throwe;}finally{DBconn.closePstmt(pstmt);DBconn.closeConn(conn);}}學(xué)生的主頁是由主頁中include進(jìn)去幾個(gè)頁組成的。所以要在用戶的頁面中顯示公告,創(chuàng)建了一個(gè)Head_MainAction類,在該類中的show方法中使用request.getSession().setAttribute("list_note",list_note);將list_note放在session中的。于是只要瀏覽器不關(guān),在任何一個(gè)顯示頁面都能取到用EL表達(dá)${lsit_note}取得。添加公告頁面如圖6-6所示:圖6-6添加公告頁面6.2.5留言管理模塊
在教師的留言管理模塊中,教師可以回復(fù)留言和刪除留言。學(xué)生只可以查看留言和留言。教師用戶創(chuàng)建了一個(gè)Back_MessageAction類,調(diào)用MessageManager中的諸方法來添加或刪除留言。學(xué)生用戶創(chuàng)建了一個(gè)Head_MessageAction類,調(diào)用MessageManager中某些方法。在學(xué)生顯示留言頁面要分我利用了jstl加EL表達(dá)式分頁,關(guān)鍵代碼如下:MessageActionFormmaf=(MessageActionForm)form;MessageManagermm=newMessageManager();ArrayListlist=mm.query();intpageSize=list.size()/4+1;ArrayListlist1=newArrayList();intbegin=0;intend=3;intcurrentPage=1;//從頁面得到數(shù)據(jù){begin=maf.getBegin();end=maf.getEnd();currentPage=maf.getCurrentPage();}maf.setBegin(begin);maf.setEnd(end);maf.setCurrentPage(currentPage);list1.add(maf);request.setAttribute("currentTime",newDate());request.setAttribute("list",list);request.setAttribute("list1",list1);request.setAttribute("pageSize",Integer.valueOf(pageSize));returnmapping.findForward("showmessage");教師查看留言頁面如圖6-7所示:圖6-7教師查看留言頁面6.2.6視頻管理模塊
視頻管理模塊分為學(xué)生用戶主頁的視頻管理和教師用戶主頁的視頻管理。教師成功登錄后,在教師用戶的主頁中的視頻管理模塊,教師可以上傳新的視頻,也可以刪除以前傳過的視頻。點(diǎn)擊“上傳視頻”就會(huì)進(jìn)入到電子教案上傳的頁面,教師點(diǎn)擊“瀏覽”選擇要上傳的視頻,然后點(diǎn)上傳就完成了一個(gè)視頻的上傳。上傳視頻的關(guān)鍵代碼如下:UpLoadFormuploadFile=(UpLoadForm)form;FormFilefile=uploadFile.getFile();StringuuidName=UUID.randomUUID().toString();Stringvideo_Name=uuidName+file.getFileName();Stringvideo_Time=uploadFile.getVideo_Time();System.out.println("時(shí)間="+video_Time);ServletContextservletContext=this.getServlet().getServletContext();Stringpath=servletContext.getRealPath("");FileOutputStreamout=newFileOutputStream(path+"/uploadV/"+video_Name);out.write(file.getFileData());out.flush();out.close();UpLoadManagerulm=newUpLoadManager();booleanflag=ulm.videoAdd(video_Name,video_Time);if(flag){request.setAttribute("currentTime",newDate());request.setAttribute("upload","success");returnmapping.findForward("upload");}request.setAttribute("upload","fail");returnmapping.findForward("AuploadV");path表示得到當(dāng)前項(xiàng)目下webRoot的路徑,為了保存視頻,在webRoot下建立了一個(gè)名為uploadV的文件夾,把視頻保存在tomcat服務(wù)器下。同時(shí)為避免出現(xiàn)相同文件名的視頻名字,每個(gè)視頻上傳之前在視頻名前加了一段唯一的UUID字符編碼,對(duì)應(yīng)數(shù)據(jù)可存入tb_video表中的video_Name字段,將來在顯示視頻的詳細(xì)信息時(shí)同樣根據(jù)video_Name來尋找視頻。學(xué)生下載視頻,用video_Name查找下載視頻。下載視頻的代碼如下:UpLoadFormulf=(UpLoadForm)form;Stringvideo_Name=ulf.getVideo_Name();video_Name=newString(video_Name.getBytes("ISO-8859-1"),"GB18030");ServletContextservletContext=this.getServlet().getServletContext();Stringpath=servletContext.getRealPath("");FileInputStreaminPut=newFileInputStream(path+"/uploadV/"+video_Name);response.setContentType("application/x-msdownload");response.setHeader("Content-Disposition","attachment;filename="+newString(video_Name.getBytes("GB18030"),"ISO-8859-1"));OutputStreamout=response.getOutputStream();byte[]b=newbyte[1024*1024];while(inPut.read(b)>0){out.write(b);out.flush();}inPut.close();out.close();教師可以根據(jù)video_Name刪除某些視頻,調(diào)用delVideo()方法將相關(guān)信息刪除。關(guān)鍵代碼如下:UpLoadFormulf=(UpLoadForm)form;Stringvideo_Name=ulf.getVideo_Name();ServletContextservletContext=this.getServlet().getServletContext();Stringpath=servletContext.getRealPath("");Filefilename=newFile(path+"/uploadV/"+video_Name);filename.delete();UpLoadManagerum=newUpLoadManager();booleanflag=um.delVideo(video_Name);6.2.7作業(yè)管理模塊
本模塊在學(xué)生用戶的主頁是學(xué)生將自己的作業(yè)上傳到服務(wù)器下的uploadT文件夾中,還可以下載老師批改后上傳的作業(yè)。在教師用戶的主頁中老師將學(xué)生上傳的作業(yè)下載下來,之后再將批改好的作業(yè)上傳到服務(wù)器中,供學(xué)生下載。上傳作業(yè)與上傳視頻類似,只不過多了個(gè)Stringuser_name=uploadFile.getUser_name();用來收集上傳試卷的用戶名。關(guān)鍵代碼如下:UpLoadFormuploadFile=(UpLoadForm)form;FormFilefile=uploadFile.getFile();Stringtest_Name=file.getFileName();Stringtest_Time=uploadFile.getTest_Time();Stringuser_name=uploadFile.getUser_name();System.out.println("時(shí)間="+test_Time);ServletContextservletContext=this.getServlet().getServletContext();Stringpath=servletContext.getRealPath("");FileOutputStreamoutPut=newFileOutputStream(path+"/uploadT/"+file.getFileName());outPut.write(file.getFileData());outPut.flush();outPut.close();UpLoadManagerulm=newUpLoadManager();booleanflag=ulm.testAdd(test_Name,test_Time,user_name);學(xué)生上傳作業(yè)頁面如圖6-8所示:圖6-8學(xué)生上傳作業(yè)頁面6.2.8在線答疑模塊
在這個(gè)模塊中學(xué)生和教師可以在線交流,學(xué)生可以向老師在線提出問題,老師將在線回答。學(xué)生或者教師將說的話發(fā)送,將先存到數(shù)據(jù)中,隨之再將數(shù)據(jù)庫中的后20條記錄取出,在message.jsp中顯示。在線答疑頁面的主要代碼如下:<framesetrows="*"cols="*,250"framespacing="1"frameborder="yes"border="1"bordercolor="#99ffff"><framesetrows="*,117"cols="*"framespacing="0"frameborder="yes"border="0"><framesrc="message.jsp"name="mainFrame"frameborder="1"><framesrc="control.jsp"name="bottomFrame"frameborder="1"></frameset><framesetrows="*,119"cols="*"framespacing="0"frameborder="yes"border="0"><framesrc="leave.jsp"name="bottomFrame1"frameborder="1"scrolling="no"noresize="noresize"></frameset></frameset>6.2.9友情鏈接管理模塊
教師還可將自己知道的一些好的網(wǎng)站添加到網(wǎng)站里,把友情鏈接的網(wǎng)名和網(wǎng)址添加進(jìn)去,學(xué)生會(huì)在頁面上看見添加進(jìn)的網(wǎng)站名字,用戶可以點(diǎn)網(wǎng)站名進(jìn)入相應(yīng)的網(wǎng)站。為了方便管理和安全,將所有的sql語句都封裝在一個(gè)Sql類中,并且每條語句都定義成publicstaticfinal類的,這樣就不允許有別的語句繼承它們。具體的代碼如下:publicfinalclassSql{//用戶登錄publicstaticfinalStringlogin_tb_user="selectcount(*)fromtb_userwhereuser_name=?anduser_password=?";//用戶注冊向數(shù)庫數(shù)中增加數(shù)據(jù)publicstaticfinalStringregistAdd_tb_user="insertintotb_user(user_name,user_password,realname,email)"+"values(
?,?,?,?)";//
publicstaticfinalStringqueryId_tb_user="selectuser_idfromtb_userwhereuser_name=?";publicstaticfinalStringregistCheck_tb_user="selectcount(*)fromtb_userwhereuser_name=?";publicstaticfinalStringadd_tb_articleType="insertintotb_articleType(typeName,description)values(?,?)";publicstaticfinalStringquery_tb_articleType="select*fromtb_articleType";publicstaticfinalStringdel_tb_articleType="deletefromtb_articleTypewheretype_id=?";publicstaticfinalStringadd_tb_article="insertintotb_article(title,type_id,content,phTime,number)values(?,?,?,?,?)";publicstaticfinalStringdel_tb_article="deletefromtb_articlewherearticle_id=?";publicstaticfinalStringquery_Article="select*fromtb_article";publicstaticfinalStringshow_Article="selecttb_article.*,tb_articleType.*fromtb_article,tb_articleTypewhere(tb_article.type_id=tb_articleType.type_idandtb_article.type_id=?andarticle_id=?)";publicstaticfinalStringxin="selecttb_article.*,typeName,descriptionfromtb_articleleftjointb_articleTypeon(tb_article.type_id=tb_articleType.type_id)";publicstaticfinalStringadd_tb_note="insertintotb_note(note_title,note_content,note_time)values(?,?,?)";publicstaticfinalStringquery_tb_note="select*fromtb_note";publicstaticfinalStringdel_tb_note="deletefromtb_notewherenote_id=?";publicstaticfinalStringshow_tb_note="select*fromtb_notewherenote_id=?";publicstaticfinalStringupdate_tb_note="updatetb_notesetnote_content=?,note_time=?wherenote_id=?";publicstaticfinalStringupdate_tb_article="updatetb_articlesetcontent=?,phTime=?wherearticle_id=?";publicstaticfinalStringquery_tb_user="selectuser_id,user_name,realname,emailfromtb_user";publicstaticfinalStringdel_tb_user="deletefromtb_userwhereuser_id=?";publicstaticfinalStringquery_tb_message="select*fromtb_messageorderbymes_id";publicstaticfinalStringdelone_tb_message="deletefromtb_messagewheremes_id=?";publicstaticfinalStringdelall_tb_message="deletefromtb_message";publicstaticfinalStringreply_tb_message="insertintotb_message(mes_content,mes_sender,mes_sendTime,to_whom)values(?,?,?,?,?)";publicstaticfinalStringadd_tb_link="insertintotb_link(link_name,link_add)values(?,?)";publicstaticfinalStringdel_tb_link="deletefromtb_linkwherelink_id=?";publicstaticfinalStringquery_tb_link="selectlink_id,link_name,link_addfromtb_link";//
publicstaticfinalStringpart_Article="selectarticle_id,title,content,phTime,numberfromtb_articleorderbyarticle_iddesc";publicstaticfinalStringpart_Article="selectarticle_id,title,content,phTime,number,typeNamefromtb_articleleftjointb_articleTypeon(tb_article.type_id=tb_articleType.type_id)orderbyarticle_iddesc";publicstaticfinalStringshow_link="select*fromtb_link";publicstaticfinalStringshow_note="select*fromtb_noteorderbynote_iddesc";publicstaticfinalStringadd_tb_video="insertintotb_video(video_Name,video_Time)values(?,?)";publicstaticfinalStringadd_tb_test="insertintotb_test(test_Name,test_Time,user_name)values(?,?,?)";publicstaticfinalStringquery_tb_video="selectvideo_Name,video_Timefromtb_videoorderbyvideo_iddesc";publicstaticfinalStringquery_tb_test="selecttest_Name,test_Time,user_namefromtb_testorderbytest_iddesc";publicstaticfinalStringdel_tb_video="deletefromtb_videowherevideo_Name=?";}第7章開發(fā)中遇到的難點(diǎn)和對(duì)策
a.數(shù)據(jù)庫的連接問題問題:數(shù)據(jù)庫的連接:在開發(fā)過程中經(jīng)常出現(xiàn)查找不到數(shù)據(jù)庫,出現(xiàn)這樣的錯(cuò)誤一般是數(shù)據(jù)庫的連接出現(xiàn)問題。數(shù)據(jù)庫加載驅(qū)動(dòng)有問題。一開始用的是Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();Stirngurl=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 污水處理廠擴(kuò)建補(bǔ)充合同
- 無人駕駛技術(shù)研發(fā)招投標(biāo)文件
- 人才公寓物業(yè)公司招標(biāo)公告
- 信息技術(shù)意見箱管理
- 生態(tài)園林景觀基礎(chǔ)設(shè)施施工合同
- 零售設(shè)備維護(hù)
- 大型機(jī)械制造起重機(jī)施工合同
- 2025版杭州汽車租賃合同與杭州民宿租賃管理協(xié)議3篇
- 2025軟件產(chǎn)品銷售合同書
- 體育館環(huán)境衛(wèi)生工招聘合同
- 【護(hù)士資格考試】江蘇民政康復(fù)醫(yī)院模擬檢測練習(xí)題
- 消防宣傳文藝晚會(huì)臺(tái)詞禮儀主持
- 電大內(nèi)科護(hù)理學(xué)形考電大國家開放大學(xué)《內(nèi)科護(hù)理學(xué)》形考任務(wù)5試題及答案
- QD11升降平臺(tái)檢驗(yàn)報(bào)告
- GB/T 30426-2013含堿性或其他非酸性電解質(zhì)的蓄電池和蓄電池組便攜式鋰蓄電池和蓄電池組
- GB/T 1222-2007彈簧鋼
- 企業(yè)激勵(lì)員工所面臨的困境及對(duì)策
- GB 16804-1997氣瓶警示標(biāo)簽
- 教學(xué)成果申報(bào)與案例賞析課件
- 國家開放大學(xué)《行政組織學(xué)》形考1-5標(biāo)準(zhǔn)答案
- 口腔醫(yī)學(xué)牙周病學(xué)課件牙周炎
評(píng)論
0/150
提交評(píng)論