-
@JDBC——JDBC簡(jiǎn)介——JDBC獲取數(shù)據(jù)庫(kù)連接 一、三步獲取數(shù)據(jù)庫(kù)連接(需要導(dǎo)入mysql-connector-java-5.1.7-bin的jar包) 1.加載驅(qū)動(dòng)程序: Class.forName(driverClass) 加載Mysql驅(qū)動(dòng):Class.forName("com.mysql.jdbc.Driver") 加載Oracle驅(qū)動(dòng):Class.forName("oracle.jdbc.driver.OracleDriver") ***注意:驅(qū)動(dòng)是固定寫(xiě)法 2.獲得數(shù)據(jù)庫(kù)連接: DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/imooc","root","root"); ***注釋:其中jdbc:mysql表示jdbc連接mysql,127.0.0.1:3306為服務(wù)器地址和端口,imooc為數(shù)據(jù)庫(kù)名稱,root分別是用戶名和密碼 3.創(chuàng)建Statement對(duì)象: conn.createStatement();
查看全部 -
添加一個(gè)記憶變量previous,記錄上一次進(jìn)入的是哪一個(gè)分支<br>
通過(guò)定義Integer類型的變量step標(biāo)記,從而添加相應(yīng)的數(shù)據(jù)到數(shù)據(jù)庫(kù)中<br> 注意:<br>
StringBulider創(chuàng)建一個(gè)內(nèi)容可變的字符串,使用append()方法<br>
SimpleDateFormat("yyyy-MM-dd") 定義日期格式<br> Integer.valueof()將字符串類型轉(zhuǎn)化為整型
日期格式強(qiáng)轉(zhuǎn): SimpleDateFormat sf=new SimpleDateFormat("格式") birthday=sf.parse(in);
查看全部 -
視圖層設(shè)計(jì):
查看全部 -
搭建控制層
?public List<Goddess> query(List<Map<String,Object>> params) throws Exception{//按名查詢多個(gè)女神
???//3.通過(guò)數(shù)據(jù)庫(kù)的連接操作數(shù)據(jù)庫(kù),實(shí)現(xiàn)增刪查改
???? Connection conn=DBUtil.getConnection();
???? StringBuilder sb=new StringBuilder();
???? sb.append("select * from imooc_goddess where 1=1 ");
???? if(params!=null&¶ms.size()>0){
????? for(int i=0;i<params.size();i++){
?????? Map<String,Object>map=params.get(i);
?????? sb.append(" and "+map.get("name")+" "+map.get("rela")+" "+map.get("value"));
????? }
???? }
???? PreparedStatement ptmt=conn.prepareStatement(sb.toString());
???? System.out.println(sb.toString());
???? ResultSet rs=ptmt.executeQuery();
???
???? List<Goddess> gs=new ArrayList<Goddess>();
???? Goddess g=null;
????while(rs.next()){
????? g=new Goddess();
?????? g.setId(rs.getInt("id"));
?????? g.setUser_name(rs.getString("user_name"));
?????? g.setAge(rs.getInt("age"));
?????? g.setSex(rs.getInt("sex"));
?????? g.setBirthday(rs.getDate("birthday"));
?????? g.setEmail(rs.getString("email"));
?????? g.setMobile(rs.getString("mobile"));
?????? g.setCreate_date(rs.getDate("create_date"));
?????? g.setCreate_user(rs.getString("create_user"));
?????? g.setUpdate_date(rs.getDate("update_date"));
?????? g.setUpdate_user(rs.getString("update_user"));
?????? g.setIsdel(rs.getInt("isdel"));
?????? gs.add(g);
?????
????}
???? return gs;
??? }List<Map<String,Object>>params=new ArrayList<Map<String,Object>>();
??Map<String,Object>map=new HashMap<String,Object>();
??map.put("name", "user_name");
??map.put("rela", "=");
??map.put("value", "'小綠'");
??params.add(map);
??List<Goddess>result=ga.query(params);
??for(Goddess result1:result){
???System.out.println(result1.toString());
??}查看全部 -
新增、修改女神的時(shí)候,傳進(jìn)來(lái)的是java.util.Date類型,需要轉(zhuǎn)換java.sql.Date類型,但是往回轉(zhuǎn)的時(shí)候,通過(guò)數(shù)據(jù)庫(kù)傳遞出來(lái)java.sql.Date類型再轉(zhuǎn)回到j(luò)ava.util.Date類型就不需要了
因?yàn)閖ava.sql.Date是java.util.Date子集
數(shù)據(jù)庫(kù)插入的時(shí)候? 需要將java.utils.Date --->java.sql.Date
?因?yàn)閟ql.Date是utils.Date的子集?
(而數(shù)據(jù)庫(kù)中的 java.sql.Date--->java.utils.Date? 則不需要強(qiáng)轉(zhuǎn))
使用JDBC連接數(shù)據(jù)庫(kù)需要四步,第一步加載驅(qū)動(dòng)程序;第二步,連接數(shù)據(jù)庫(kù);第三步,訪問(wèn)數(shù)據(jù)庫(kù);第四步,執(zhí)行查詢;其中在第四步執(zhí)行查詢時(shí),要用statement類的executeQuery()方法來(lái)下達(dá)select指令以查詢數(shù)據(jù)庫(kù),executeQuery()方法會(huì)把數(shù)據(jù)庫(kù)響應(yīng)的查詢結(jié)果存放在ResultSet類對(duì)象中供我們使用。即語(yǔ)句:String sql="select * from"+tableName; ResultSet rs=s.executeQuery(sql);
查看全部 -
詳細(xì)設(shè)計(jì)方案:
查看全部 -
@JDBC——JDBC簡(jiǎn)介——JDBC獲取數(shù)據(jù)庫(kù)連接 一、三步獲取數(shù)據(jù)庫(kù)連接(需要導(dǎo)入mysql-connector-java-5.1.7-bin的jar包)
加載驅(qū)動(dòng)程序: Class.forName(driverClass) 加載Mysql驅(qū)動(dòng):Class.forName("com.mysql.jdbc.Driver") 加載Oracle驅(qū)動(dòng):Class.forName("oracle.jdbc.driver.OracleDriver") ***注意:驅(qū)動(dòng)是固定寫(xiě)法
獲得數(shù)據(jù)庫(kù)連接: DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/imooc","root","root"); ***注釋:其中jdbc:mysql表示jdbc連接mysql,127.0.0.1:3306為服務(wù)器地址和端口,imooc為數(shù)據(jù)庫(kù)名稱,root分別是用戶名和密碼
創(chuàng)建Statement對(duì)象: conn.createStatement();
查看全部 -
JDBC簡(jiǎn)介:
查看全部 -
JDBC各種連接方式的對(duì)比: 1、JDBC + ODBC橋的方式。特點(diǎn):需要數(shù)據(jù)庫(kù)的ODBC驅(qū)動(dòng),僅適用于微軟的系統(tǒng) 這種方式,JDBC將調(diào)用傳遞給ODBC,然后ODBC再調(diào)用本地的數(shù)據(jù)庫(kù)驅(qū)動(dòng)代碼。 2、JDBC + 廠商API的形式。特點(diǎn):廠商API一般使用C編寫(xiě) 這種方式,JDBC將調(diào)用直接傳遞給廠商API的服務(wù),然后在調(diào)用本地的數(shù)據(jù)庫(kù)驅(qū)動(dòng)。 3、JDBC + 廠商Database Connection Server + DataBase的形式。 特點(diǎn):在JAVA與DATABASE之間架起了一臺(tái)專門(mén)用于數(shù)據(jù)庫(kù)連接的服務(wù)器(一般有數(shù)據(jù)庫(kù)廠商提供) 這種方式,JDBC將調(diào)用傳遞給中間服務(wù)器,中間服務(wù)器再將調(diào)用轉(zhuǎn)換成數(shù)據(jù)庫(kù)能夠被調(diào)用的形式,在調(diào)用數(shù)據(jù)庫(kù)服務(wù)器。中間增設(shè)數(shù)據(jù)庫(kù)服務(wù)器能夠提升效率,但不如直接操作數(shù)據(jù)庫(kù)便捷。 4、JDBC + DATABASE的連接方式。 特點(diǎn):這使得Application與數(shù)據(jù)庫(kù)分開(kāi),開(kāi)發(fā)者只需關(guān)心內(nèi)部邏輯的實(shí)現(xiàn)而不需注重?cái)?shù)據(jù)庫(kù)連接的具體實(shí)現(xiàn)。(沒(méi)有中間環(huán)節(jié),是推薦方式?。?/p>
查看全部 -
1.添加一個(gè)記憶變量previous,記錄上一次進(jìn)入的是哪一個(gè)分支<br> 2.通過(guò)定義Integer類型的變量step標(biāo)記,從而添加相應(yīng)的數(shù)據(jù)到數(shù)據(jù)庫(kù)中<br> 注意:<br> StringBulider創(chuàng)建一個(gè)內(nèi)容可變的字符串,使用append()方法<br> SimpleDateFormat("yyyy-MM-dd") 定義日期格式<br> Integer.valueof()將字符串類型轉(zhuǎn)化為整型
查看全部 -
1.更改while(true)中的true,使用Scanner中的hasNext()方法,有輸入值的時(shí)候就循環(huán),沒(méi)有輸入值的時(shí)候不循環(huán)。 2.使用toUpperCase()方法,如果輸入為小寫(xiě)的exit則轉(zhuǎn)為大寫(xiě);或者為EXIT的首字母,均實(shí)現(xiàn)退出操作 Scanner scan=new Scanner(System.in); while(scan.hasNext()){ String in=scan.next().toString(); if(OPERATION_EXIT.equals(in.toUpperCase())||OPERATION_EXIT.substring(0,1).equals(in.toUpperCase())){ System.out.println("您已成功退出。"); break; } }
查看全部 -
控制層:接受view層的行為(參數(shù)),對(duì)model層數(shù)據(jù)操作,model層數(shù)據(jù)反饋給c層,c再反饋給v層
查看全部 -
使用query(List<Map<String,Object>> params) 和 where 1=1; jdbc傳參數(shù)過(guò)多的時(shí)候:用List<Map<String,Object>> params雙泛型作為參數(shù):<br> if(params!=null&?ms.siaze()>0){<br> for(int i =0;i<params.size();i++){<br> Map<String,Object> map = params.get(i);<br> sb.append("and "+map.get("name")+" "+map.get("relation")+" "+map.get("value")");<br> }<br> }<br> 接下來(lái)在Action(main方法)中:<br> GoddessDao g = new GoddessDao();<br> List<Map<String,Object>> params = new ArrayList<Map<String,Object>>;<br> Map<String,Object> param = new HashMap<String,Object>();<br> params.put("name","user_name");<br> params.put("relation","=");<br> params.put("value","'小美'");--------注意如果值是字符串需要加上單引號(hào)區(qū)分字符串<br> List<Goddess> result = g.query(parms);
查看全部 -
新增、修改女神的時(shí)候,傳進(jìn)來(lái)的是java.util.Date類型,需要轉(zhuǎn)換java.sql.Date類型,但是往回轉(zhuǎn)的時(shí)候,通過(guò)數(shù)據(jù)庫(kù)傳遞出來(lái)java.sql.Date類型再轉(zhuǎn)回到j(luò)ava.util.Date類型就不需要了
因?yàn)閖ava.sql.Date是java.util.Date子集
數(shù)據(jù)庫(kù)插入的時(shí)候? 需要將java.utils.Date --->java.sql.Date
?因?yàn)閟ql.Date是utils.Date的子集?
(而數(shù)據(jù)庫(kù)中的 java.sql.Date--->java.utils.Date? 則不需要強(qiáng)轉(zhuǎn))
查看全部 -
//通過(guò)靜態(tài)方法,獲取連接數(shù)據(jù)庫(kù)的連接 Connection conn = DBUtil.getConnection(); //sql語(yǔ)句 String sql = "" + " insert into imooc_goddess " + " (user_name,sex,age,birthday,email,mobile, " + " create_user,create_date,update_user,update_date,isdel) " + " values("+ " ?,?,?,?,?,?,?,current_date(),?,current_date(),?);" ; //預(yù)編譯sql語(yǔ)句 PreparedStatement ptmt = conn.prepareStatement(sql); ptmt.setString(1, g.getUser_name()); ptmt.setInt(2, g.getSex()); ptmt.setInt(3, g.getAge()); ptmt.setDate(4, new Date(g.getBirthday().getTime())); ptmt.setString(5, g.getEmail()); ptmt.setString(6, g.getMobile()); ptmt.setString(7, g.getCreate_user()); ptmt.setString(8, g.getUpdate_user()); ptmt.setInt(9, g.getIsdel()); ptmt.execute();
查看全部
舉報(bào)