程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 微信平台開辟 數據庫操作

微信平台開辟 數據庫操作

編輯:MySQL綜合教程

微信"平台開辟 數據庫操作。本站提示廣大學習愛好者:(微信"平台開辟 數據庫操作)文章只能為提供參考,不一定能成為您想要的結果。以下是微信"平台開辟 數據庫操作正文


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. 掃描二維碼:

卓錦姑蘇 功效列表:

 感激浏覽,願望能贊助到年夜家,感謝年夜家對本站的支撐!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved