微信"平台開辟 數據庫操作。本站提示廣大學習愛好者:(微信"平台開辟 數據庫操作)文章只能為提供參考,不一定能成為您想要的結果。以下是微信"平台開辟 數據庫操作正文
1. 情況設置裝備擺設
下載地址:http://www.mysql.com/downloads/mysql/ 真費事,下載的話還須要注冊和登錄和填個表。下面的信息還挺全的,亂填的信息也是可以接收的~~ 下載後按提醒裝置便可,最初設置登錄mysql用的暗碼。裝置完成後,測試銜接數據庫。在開端-法式中點擊MYSQL5.5 Command Line cilent,輸出適才設定的暗碼後,應當後就可以連上mysql辦事器了。
在裝置後的軟件包中,mysql_server\Connector J XXXX中可以找到一個jar包,這個jar包是java法式銜接mysql數據庫必需的。若沒有這個包,法式代碼將提醒:ClassNotFoundExceptioncom.mysql.jdbc.Driver的毛病。
新建一個java項目,並在項目中新建一個寄存jar 包的文件夾(如 lib),將mysql-connector-java-X.X.X-bin.jar 復制到文件夾中,選中jar包右擊--->Build Path--->Add To Build Path,便可。若新建的是一個web項目,而放在WEB-INF下的lib文件夾中便可。
2. JDBC引見
JDBC是Sun公司制訂的一個可以用Java說話銜接數據庫的技巧。
2.1 JDBC基本常識
JDBC(Java Data Base Connectivity,java數據庫銜接)是一種用於履行SQL語句的Java API,可認為多種關系數據庫供給同一拜訪,它由一組用Java說話編寫的類和接口構成。JDBC為數據庫開辟人員供給了一個尺度的API,據此可以構建更高等的對象和接口,使數據庫開辟人員可以或許用純 Java API 編寫數據庫運用法式,而且可跨平台運轉,而且不受數據庫供給商的限制。
1、跨平台運轉:這是繼續了Java說話的“一次編譯,隨處運轉”的特色;
2、不受數據庫供給商的限制:奇妙在於JDBC設有兩種接口,一個是面向運用法式層,其感化是使得開辟人員經由過程SQL挪用數據庫和處置成果,而不須要斟酌數據庫的供給商;另外一個是驅動法式層,處置與詳細驅動法式的交互,JDBC驅動法式可以應用JDBC API創立Java法式和數據源之間的橋梁。運用法式只須要編寫一次,即可以移到各類驅動法式上運轉。Sun供給了一個驅動治理器,數據庫供給商——如MySQL、Oracle,供給的驅動法式知足驅動治理器的請求便可以被辨認,便可以正常任務。所以JDBC不受數據庫供給商的限制。
JDBC API可以作為銜接Java運用法式與各類關系數據庫的紐帶,在帶來便利的同時也有負面影響,以下是JDBC的優、缺陷。
長處以下:
操作便捷:JDBC使得開辟人員不須要再應用龐雜的驅動器挪用敕令和函數;
可移植性強:JDBC支撐分歧的關系數據庫,所以可使統一個運用法式支撐多個數據庫的拜訪,只需加載響應的驅動法式便可;
通用性好:JDBC-ODBC橋接驅動器將JDBC函數換成ODBC;
面向對象:可以將經常使用的JDBC數據庫銜接封裝成一個類,在應用的時刻直接挪用便可。
缺陷以下:
拜訪數據記載的速度遭到必定水平的影響;
更改數據源艱苦:JDBC可支撐多種數據庫,各類數據庫之間的操作必有分歧,這就給更改數據源帶來了很年夜的費事
2.2 JDBC銜接數據庫的流程及其道理
1) 在開辟情況中加載指定命據庫的驅動法式。例如,接上去的試驗中,應用的數據庫是MySQL,所以須要去下載MySQL支撐JDBC的驅動法式;而開辟情況是MyEclipse,將下載獲得的驅動法式加載進開辟情況中(詳細示例的時刻會講授若何加載)。
2) 在Java法式中加載驅動法式。在Java法式中,可以經由過程 “Class.forName(“指定命據庫的驅動法式”)” 方法來加載添加到開辟情況中的驅動法式,例如加載MySQL的數據驅動法式的代碼為: Class.forName(“com.mysql.jdbc.Driver”)
3) 創立數據銜接對象:經由過程DriverManager類創立數據庫銜接對象Connection。DriverManager類感化於Java法式和JDBC驅動法式之間,用於檢討所加載的驅動法式能否可以樹立銜接,然後經由過程它的getConnection辦法,依據數據庫的URL、用戶名和暗碼,創立一個JDBC Connection 對象。如:Connection connection = DriverManager.getConnection(“銜接數據庫的URL", "用戶名", "暗碼”)。個中,URL=協定名+IP地址(域名)+端口+數據庫稱號;用戶名和暗碼是指登錄數據庫時所應用的用戶名和暗碼。詳細示例創立MySQL的數據庫銜接代碼以下:
Connection connectMySQL = DriverManager.getConnection(“jdbc:mysql://localhost:3306/myuser","root" ,"root" );
4) 創立Statement對象:Statement 類的重要是用於履行靜態 SQL 語句並前往它所生成成果的對象。經由過程Connection 對象的 createStatement()辦法可以創立一個Statement對象。例如:Statement statament = connection.createStatement(); 詳細示例創立Statement對象代碼以下:
Statement statamentMySQL =connectMySQL.createStatement();
別的,普通情形下都可使用PreparedStatement來代碼Statement,因數PreparedStatement可以避免SQL注入進擊,避免數據庫緩沖池溢出,代碼的可讀性,可保護性。詳細示例創立PreparedStatement代碼以下:
String sql = "Select title, year_made from movies where year_made >= ? and year_made <= ?";
PreparedStatement ps =connectMySQL.prepareStatement(sql);
5) 挪用Statement對象的相干辦法履行絕對應的 SQL 語句:經由過程execuUpdate()辦法用來數據的更新,包含拔出和刪除等操作,例如向staff表中拔出一條數據的代碼:
statement.excuteUpdate( "INSERT INTO staff(name, age, sex,address, depart, worklen,wage)" + " VALUES ('Tom1', 321, 'M', 'china','Personnel','3','3000' ) ") ;
若應用PreparedStatement,則:
prest.setInt(1,1980); //表現第1個參數為1980 prest.setInt(2,2004); ResultSet rs = prest.executeQuery();
經由過程挪用Statement對象的executeQuery()辦法停止數據的查詢,而查詢成果會獲得 ResultSet對象,ResultSet表現履行查詢數據庫後前往的數據的聚集,ResultSet對象具有可以指向以後數據行的指針。經由過程該對象的next()辦法,使得指針指向下一行,然後將數據以列號或許字段名掏出。假如當next()辦法前往null,則表現下一行中沒稀有據存在。應用示例代碼以下:
ResultSet resultSet = statement.executeQuery( "select * from staff" );
6) 封閉數據庫銜接:應用完數據庫或許不須要拜訪數據庫時,經由過程Connection的close() 辦法實時封閉數據銜接。
3. 測試代碼
設置裝備擺設好情況後,便可以寫代碼測試能否能連通啦!
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class TestMysqlConn { public static void main(String[] args) { Connection con; Statement stmt; ResultSet rs; try { Class.forName("com.mysql.jdbc.Driver").newInstance(); //test為數據庫名,_test為表名。_test表中有三個字段:id name description con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test","root","root"); stmt = con.createStatement(); rs = stmt.executeQuery("select * from _test"); while(rs.next()){ int num = rs.getInt("id"); String name = rs.getString("name"); String des = rs.getString("description"); System.out.println(num + " " + name + " " + des); } stmt.close(); conn.close(); } catch (Exception e) { e.printStackTrace(); System.out.println("銜接掉敗"); } } }
以上就是本文的全體內容,願望對年夜家的進修有所贊助,也願望年夜家多多支撐。
eturn 0; //拔出數據掉敗 }else{ if(mysql_affected_rows()>0){ return 1; //拔出勝利 }else{ return 2; //沒有行遭到影響 } } }5.3 刪除數據
//刪除數據 function _delete_data($sql){ if(!mysql_query($sql)){ return 0; //刪除掉敗 }else{ if(mysql_affected_rows()>0){ return 1; //刪除勝利 }else{ return 2; //沒有行遭到影響 } } }
5.4 修正數據
//修正數據 function _update_data($sql){ if(!mysql_query($sql)){ return 0; //更新數據掉敗 }else{ if(mysql_affected_rows()>0){ return 1; //更新勝利; }else{ return 2; //沒有行遭到影響 } } }
5.5 檢索數據
//檢索數據 function _select_data($sql){ $ret = mysql_query($sql) or die('SQL語句有毛病,毛病信息:'.mysql_error()); return $ret; }
5.6 刪除數據表
//刪除表 function _drop_table($sql){ mysql_query($sql) or die('刪除表掉敗,毛病信息:'.mysql_error()); return "刪除表勝利"; }
將以上函數和銜接數據庫的代碼聯合起來,生成mysql_bae.func.php 文件,供上面測試應用。
6、測試MySQL 函數應用
6.1 新建文件dev_mysql.php 在統一目次下並引入mysql_bae.func.php 文件
require_once './mysql_bae.func.php';
6.2 測試創立表
將下面應用phpMyAdmin 創立的test_mysql 表刪除,測試語句以下:
//創立表 $create_sql = "CREATE TABLE IF NOT EXISTS `test_mysql` ( `id` int(11) NOT NULL AUTO_INCREMENT, `from_user` varchar(40) DEFAULT NULL, `account` varchar(40) DEFAULT NULL, `password` varchar(40) DEFAULT NULL, `update_time` datetime DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `from_user` (`from_user`) )"; echo _create_table($create_sql);
測試准確成果:
到phpMyAdmin中檢查
有意將SQL語句寫錯
測試毛病成果:
6.3 測試拔出數據
測試語句以下:
//拔出數據 $insert_sql = "insert into test_mysql(from_user, account, password, update_time) values('David','860510', 'abcabc', '2013-09-29 17:14:28')"; $res = _insert_data($insert_sql); if($res == 1){ echo "拔出勝利"; }else{ echo "拔出掉敗"; }
測試成果:
6.4 測試更新數據
測試語句以下:
//更新數據 $update_sql = "update test_mysql set account = 860512 where account = 860510"; $res = _update_data($update_sql); if($res == 1){ echo "更新勝利"; }elseif($res == 0){ echo "更新掉敗"; }elseif($res == 2){ echo "沒有行遭到影響"; }
測試成果:
再次更新:
6.5 測試刪除數據
測試語句以下:
//刪除數據 $delete_sql = "delete from test_mysql where account = 860512"; $res = _delete_data($delete_sql); if($res == 1){ echo "刪除勝利"; }elseif($res == 0){ echo "刪除掉敗"; }elseif($res == 2){ echo "沒有該筆記錄"; }
測試成果:
再次刪除:
6.6 測試檢索數據
再次履行下面的拔出操作做檢索測試,測試語句以下:
//檢索數據 $select_sql = "select * from test_mysql"; $result = _select_data($select_sql); while($rows = mysql_fetch_array($result,MYSQL_ASSOC)){ echo $rows[id]."--".$rows[from_user]."--".$rows[account]."--".$rows[password]."--".$rows[update_time]; echo " "; }
測試成果:
6.7 測試刪除表
測試語句以下:
//刪除表$drop_sql = "drop table if exists test_mysql";
echo _drop_table($drop_sql);
測試成果:
MySQL 函數測試全體勝利。
7、完成與微信的交互(Mysql 擴大)
包管數據庫中存在test_msyql表,這裡測試微信對MySQL數據庫的增刪改查操作,不斟酌特別情形,只依照上面的辦法測試:
1. 綁定+賬戶+暗碼 如:綁定+860512+abc123 2. 查詢 如:查詢 3. 修正+舊暗碼+新暗碼 如:修正+abc123+123456 4. 刪除 如:刪除
7.1 引入mysql_bae.func.php 文件
//引入數據庫函數文件
require_once 'mysql_bae.func.php';
7.2 前置操作
A. 將輸出的語句拆分紅數組,以“+”號分隔
$keywords = explode("+",$keyword);
B. 獲得以後時光
//獲得以後時光$nowtime=date("Y-m-d G:i:s");
C. 斷定用戶能否曾經綁定
//斷定能否曾經綁定 $select_sql="SELECT id from test_mysql WHERE from_user='$fromUsername'"; $res=_select_data($select_sql); $rows=mysql_fetch_array($res, MYSQL_ASSOC); if($rows[id] <> ''){ $user_flag='y'; }
7.3 測試拔出操作
測試代碼:
if(trim($keywords[0] == '綁定')){ if($user_flag <> 'y'){ $insert_sql="INSERT INTO test_mysql(from_user, account, password, update_time) VALUES('$fromUsername','$keywords[1]','$keywords[2]','$nowtime')"; $res = _insert_data($insert_sql); if($res == 1){ $contentStr = "綁定勝利"; }elseif($res == 0){ $contentStr = "綁定掉敗"; } }else{ $contentStr = "該賬戶已綁定"; } }
測試成果:
7.4 測試查詢操作
測試代碼:
if(trim($keywords[0] == '查詢')){ $select_sql="SELECT * FROM test_mysql WHERE from_user='$fromUsername'"; $select_res=_select_data($select_sql); $rows=mysql_fetch_assoc($select_res); if($rows[id] <> ''){ $contentStr="賬戶:$rows[account]\n"."暗碼:$rows[password]\n"."From_user:$rows[from_user]\n"."更新時光:$rows[update_time]"; }else{ $contentStr="您還未綁定賬戶,查詢不到相干信息,請先綁定,感謝!"; } }
測試成果:
7.5 測試更新操作
測試代碼:
if(trim($keywords[0] == "修正")){ $old_password=$keywords[1]; $new_password=$keywords[2]; $select_password_sql="SELECT * FROM test_mysql WHERE from_user='$fromUsername'"; $select_res=_select_data($select_password_sql); $rows=mysql_fetch_assoc($select_res); if($old_password == $rows[password]){ $update_sql="UPDATE test_mysql SET password='$new_password' WHERE from_user='$fromUsername'"; $res = _update_data($update_sql); if($res == 1){ $contentStr = "修正勝利"; }elseif($res == 0){ $contentStr = "修正掉敗"; } }else{ $contentStr = "原暗碼有誤,請確認後重試"; } }
測試成果:
7.6 測試刪除操作
測試代碼:
if(trim($keywords[0] == "刪除")){ $delete_sql="DELETE FROM test_mysql WHERE from_user='$fromUsername'"; $res = _delete_data($delete_sql); if($res == 1){ $contentStr = "刪除勝利"; }elseif($res == 0){ $contentStr = "刪除掉敗"; } }
測試成果:
與微信的交互測試勝利。
8、PHP Mysqli 擴大,封裝成類
將Mysqli 擴大封裝成類應用,代碼以下:
<!--?php require_once 'includes/configure.php'; class MySQLi_BAE{ private $mysqli; private $host; private $user; private $password; private $port; private $database; //在類以外拜訪公有變量時應用 function __get($property_name){ if(isset($this--->$property_name)){ return($this->$property_name); }else{ return(NULL); } } function __set($property_name, $value){ $this->$property_name=$value; } function __construct(){ /*從平台獲得查詢要銜接的數據庫稱號*/ $this->database = MYSQLNAME; /*從情況變量裡掏出數據庫銜接須要的參數*/ $this->host = getenv('HTTP_BAE_ENV_ADDR_SQL_IP'); $this->user = getenv('HTTP_BAE_ENV_AK'); $this->password = getenv('HTTP_BAE_ENV_SK'); $this->port = getenv('HTTP_BAE_ENV_ADDR_SQL_PORT'); $this->mysqli = new mysqli($this->host, $this->user, $this->password, $this->database, $this->port); if($this->mysqli->connect_error){ die("Connect Server Failed:".$this->mysqli->error); } $this->mysqli->query("set names utf8"); } //dql statement function execute_dql($query){ $res = $this->mysqli->query($query) or die("操作掉敗".$this->mysqli->error); return $res; //$this->mysqli->close(); } //dml statement function execute_dml($query){ $res = $this->mysqli->query($query) or die("操作掉敗".$this->mysqli->error); if(!$res){ return 0;//掉敗 }else{ if($this->mysqli->affected_rows > 0){ return 1;//履行勝利 }else{ return 2;//沒有行受影響 } } //$this->mysqli->close(); } } ?>
9、測試類的應用
9.1 測試DML操作
測試代碼:
<!--?php require_once "MySQLi_BAE.class.php"; $mysqli_BAE=new MySQLi_BAE(); //**************dml******************* $sql="insert into test_mysql (from_user, account, password, update_time) values('David','860510', 'abcabc', '2013-09-27 17:14:28')"; //$sql="update test_mysql set account = 860512 where account = 860510"; //$sql="delete from test_mysql where account = 860512"; $res=$mysqli_BAE--->execute_dml($sql); if($res==0){ echo "履行掉敗"; }elseif($res==1){ echo "履行勝利"; }else{ echo "沒有行數影響"; } ?>
測試成果:
9.2 測試DQL操作
測試代碼:
<!--?php require_once "MySQLi_BAE.class.php"; $mysqli_BAE=new MySQLi_BAE(); //**************dql****************** $sql="select * from test_mysql"; $res=$mysqli_BAE--->execute_dql($sql); while($row=$res->fetch_row()){ foreach($row as $key=>$val){ echo "$val--"; } echo ' '; } $res->free(); ?>
測試成果:
10、完成與微信的交互(Mysqli 擴大)
10.1 前置操作
A. 引入MySQLi_BAE.class.php 文件
//引入數據庫函數文件require_once "MySQLi_BAE.class.php";
B. 實例化對象
public function __construct(){ $this->mysqli_BAE=new MySQLi_BAE();}
10.2 測試拔出操作
測試代碼:
$insert_sql="INSERT INTO test_mysql(from_user, account, password, update_time) VALUES('$fromUsername',
'$keywords[1]','$keywords[2]','$nowtime')";$res = $this->mysqli_BAE->execute_dml($insert_sql);
測試成果:
10.3 測試查詢操作
測試代碼:
$select_sql="SELECT * FROM test_mysql WHERE from_user='$fromUsername'";
$select_res=$this->mysqli_BAE->execute_dql($select_sql);$rows=$select_res->fetch_array(MYSQLI_ASSOC);
測試成果:
10.4 測試更新操作
測試代碼:
$update_sql="UPDATE test_mysql SET password='$new_password' WHERE from_user='$fromUsername'";
$res = $this->mysqli_BAE->execute_dml($update_sql);
測試成果:
10.5 測試刪除操作
測試代碼:
$delete_sql="DELETE FROM test_mysql WHERE from_user='$fromUsername'";
$res = $this->mysqli_BAE->execute_dml($delete_sql);
測試成果:
與微信交互測試勝利。
11、完全代碼獲得
請拜訪 樂思樂享 官方服裝論壇t.vhao.net
URL:http://pan.百度.com/s/1c0s3Jby
12、存眷
請存眷 卓錦姑蘇 微信"帳號,卓錦姑蘇 基於BAE 平台開辟,針關於主流的微信功效停止開辟測試。
您可以存眷 卓錦姑蘇 "帳號停止功效測試,和獲得新的運用開辟。
1. 登錄微信客戶端,通信錄 -> 添加同伙 -> 查找"號 -> zhuojinsz,查找並存眷。
2. 掃描二維碼:
卓錦姑蘇 功效列表:
感激浏覽,願望能贊助到年夜家,感謝年夜家對本站的支撐!