<output id="r87xx"></output>
    1. 
      
      <mark id="r87xx"><thead id="r87xx"><input id="r87xx"></input></thead></mark>
        •   

               當前位置:首頁>軟件介紹>MySQL數(shù)據(jù)庫編程 查詢:
               
          MySQL數(shù)據(jù)庫編程

                  Mysql是一個小型關(guān)系型數(shù)據(jù)庫管理系統(tǒng),開發(fā)者為瑞典MySQL AB公司。在2008年1月16日被Sun公司收購。目前MySQL被廣泛地應用在internet上的中小型網(wǎng)站中。由于其體積小、速度快、總體擁有成本低,尤其是開發(fā)源碼這一特點,許多中小網(wǎng)站為了降低網(wǎng)站總體擁有成本選擇了MySQL作為網(wǎng)站數(shù)據(jù)庫。

                  連接數(shù)據(jù)命令:mysql –u用戶名 –p密碼

                  查看mysql幫助命令:,

                  創(chuàng)建數(shù)據(jù)庫:creat database 數(shù)據(jù)庫名稱;

                  刪除數(shù)據(jù)庫:drop database 數(shù)據(jù)庫名稱;

                  使用數(shù)據(jù)庫:use 數(shù)據(jù)名稱;

                  創(chuàng)建數(shù)據(jù)庫表:creat table 表名(字段名1 字段類型 [DEFAULT 默認值] [約束],

                  字段名2 字段類型 [DEFAULT 默認值] [約束],

                  。。。

                  字段名n 字段類型 [DEFAULT 默認值] [約束]);

                  例如:creat table mytable(id int auto_increment primery key,

                  name varchar(14) not aull,

                  password varchar(32) not null,

                  age int not null);

                  刪除數(shù)據(jù)庫表:drop table 表名稱;

                  查看表結(jié)構(gòu):desc 表名稱;

                  查看全部數(shù)據(jù)庫: show databases;

                  查看一個數(shù)據(jù)庫的全部表:show tables;

                  運行SQL腳本:. ***.ql

                  SQL語法基礎:

                  SQL(Structured Query Language,結(jié)構(gòu)化查詢語言)是一個功能強大的數(shù)據(jù)庫語言。SQL通常用于與數(shù)據(jù)庫的通訊。ANSI(美國國家標準學會)聲稱,SQL是關(guān)系數(shù)據(jù)庫管理系統(tǒng)的標準語言?,F(xiàn)在的數(shù)據(jù)庫系統(tǒng)中,基本上都支持標準的SQL語法的。

                  SQL分類:SQL功能強大,概括起來,它可以分成以下幾組:

                  DML(Data Manipulation Language,數(shù)據(jù)操作語言)-----用于檢索或者修改數(shù)據(jù);--是開發(fā)中經(jīng)常使用到的。

                  DDL(Data Definition Language,數(shù)據(jù)定義語言)-----用于定義數(shù)據(jù)結(jié)構(gòu),如創(chuàng)建、修改或者刪除數(shù)據(jù)庫對象;

                  DCL(Data Control Language,數(shù)據(jù)控制語言)-----用于定義數(shù)據(jù)庫用戶的權(quán)限。 插入表信息:insert into 表名稱 values(按字段順序及對應類型分別為各字段賦值);

                  執(zhí)行以上插入信息:commit;

                  Mysql的數(shù)據(jù)類型

                  1

                  

                  mysql數(shù)據(jù)類型(2)

                  

                  增加數(shù)據(jù):

                  Insert into 表名稱(字段1,字段2,字段3,。。。,字段n)values(值1,值2,值3,。。。,值n);

                  刪除數(shù)據(jù):delete from 表名稱[刪除條件];//若未指出刪除條件,則表示刪除一張表的全部數(shù)據(jù),一般在描述條件時都是使用id表示。

                  更新數(shù)據(jù):update 表名稱 set 字段1=值1,。。。字段n=值n [where更新條件]; 簡單查詢語句:select {* |column alias} from 表名稱 [where condition(s)]; 對于數(shù)據(jù)庫操作而言,查詢是最復雜的了,查詢分為以下幾種:

                   

                  簡單查詢

                   

                  限定查詢,指定查詢的條件

                   

                  多表查詢

                   

                  分組統(tǒng)計

                   

                  子查詢

                   

                  交、并、補

                  例如1: //查詢出姓名或密碼中包含字母“m”的用戶。

                  select * from user where nam like ‘%m%’ or password like ‘%m%’;

                  例如2://查詢部分數(shù)據(jù),有分頁功能

                  select * from user where name like ‘%m%’or password like ‘%m%’ limt 10,5; JDBC操作步驟及數(shù)據(jù)庫連接操作

                  目標:

                  , 掌握JDBC的操作步驟

                  , 掌握數(shù)據(jù)庫驅(qū)動程序的配置方法

                  , 可以使用JDBC進行數(shù)據(jù)庫連接

                  JDBC本身是一個標準,所以其操作步驟是固定的,以后需要修改很少的一部分代碼就可以達到不同數(shù)據(jù)庫間的連接轉(zhuǎn)換功能。

                  JDBC操作步驟

                  數(shù)據(jù)庫安裝并配置完成后,就可以按照以下的步驟進行數(shù)據(jù)庫的操作了:

                  (1) 加載數(shù)據(jù)庫驅(qū)動程序:各個數(shù)據(jù)庫都會提供JDBC的驅(qū)動程序開發(fā)包,直接把

                  JDBC操作所需要的開發(fā)包(一般為*.jar或*.zip)直接配置到classpath路徑即可

                  。

                  (2) 連接數(shù)據(jù)庫:根據(jù)各個數(shù)據(jù)庫的不同,連接的地址也不同,此連接地址將由

                  數(shù)據(jù)庫廠商提供,一般在使用JDBC連接數(shù)據(jù)庫的時候都要求用戶輸入數(shù)據(jù)庫

                  連接的用戶名和密碼,本章使用的是mysql數(shù)據(jù)庫,所以用戶名為“root”,密

                  ,用戶在取得連接之后才可以對數(shù)據(jù)庫進行查詢或更新的碼為“mysqladmin”

                  操作。

                  (3) 使用語句進行數(shù)據(jù)庫操作:數(shù)據(jù)庫操作分為更新和查詢兩種操作,除了可以

                  使用標準的SQL語句之外,對于各個數(shù)據(jù)庫也可以使用其自己提供的各種命

                  令。

                  (4) 關(guān)閉數(shù)據(jù)庫連接:數(shù)據(jù)庫操作完畢之后需要關(guān)閉連接以釋放資源。

                  注意:如果要想連接數(shù)據(jù)庫,則肯定要使用連接地址。而且數(shù)據(jù)庫的連接時非常有限

                  

                  的,所以打開

                  之后一定要關(guān)

                  閉。

                  JDBC操作步

                  驟

                  (1)配置數(shù)

                  據(jù)庫的驅(qū)動程

                  序

                  數(shù)據(jù)庫的驅(qū)動程序是由各個數(shù)據(jù)庫生產(chǎn)商提供,只要在java中要想連接數(shù)據(jù)庫,則肯

                  定各個DB要有所支持。

                  下載地址:;ads/connector/j/5.1.html

                  假如將下載好的驅(qū)動程序放在C盤目錄中。所以此時直接修改classpath即可,在windo

                  ws中的環(huán)境中直接修改即可,如果沒有classpath則自己增加一個新的。

                  

                  3

                  (2)加載驅(qū)動程序

                  通過Class.forName()語句可以加載一個驅(qū)動程序。

                  Class實例化需要一個完整的包.類名稱,此:“包.類”名稱的路徑就應該是驅(qū)動程序的名稱。 例如:

                  public class ConnectionDemo01{

                  // 定義MySQL的數(shù)據(jù)庫驅(qū)動程序

                  public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;

                  public static void main(String args[]){

                  try{

                  Class.forName(DBDRIVER) ; // 加載驅(qū)動程序

                  }catch(ClassNotFoundException e){

                  e.printStackTrace() ;

                  }

                  }

                  }

                  (3)連接及關(guān)閉數(shù)據(jù)庫

                  數(shù)據(jù)庫驅(qū)動程序可以正常加載的話,下面就可以連接數(shù)據(jù)庫了,使用DriverManager類進行連接操作,DriverManager類中的常用方法如下:

                  

                  注意:在DriverManger中,提供的主要操作就是得到一個數(shù)據(jù)庫的連接,getConnection()方法就是取得連接對象,此方法返回的類型是Connection對象,不管使用哪種方式連接,都必須提供一個數(shù)據(jù)庫的連接地址,如果在連接數(shù)據(jù)庫的時候需要用戶名和密碼,則還需要將用戶名和密碼設置上。

                  數(shù)據(jù)庫在連接的時候肯定需要一個連接地址,這些連接地址將由各個數(shù)據(jù)庫生產(chǎn)商提供的。 Mysql數(shù)據(jù)庫的連接地址格式:jdbc:mysql://IP地址:端口號/數(shù)據(jù)庫名稱 數(shù)據(jù)庫連接地址的形式:

                  JDBC雖然提供了與平臺無關(guān)的數(shù)據(jù)庫操作,但是各個數(shù)據(jù)庫的連接地址是有差異的,JDBC的連接地址實際上是由以下的三個部分組成。

                  

                  jdbc協(xié)議:JDBC URL中的協(xié)議總是jdbc;

                  

                  子協(xié)議:驅(qū)動程序或數(shù)據(jù)庫連接機制(這種機制可由一個或多個驅(qū)動程序支

                  持)的名稱,例如:mysql

                  

                  子名稱:一種標識數(shù)據(jù)庫的方法。必須遵循“//主機名:端口/子協(xié)議”的標

                  準URL命名約定,例如://localhost:3306/mldn

                  4

                  Connection:通過DriverManager取得Connection對象之后,實際上就表示數(shù)據(jù)庫連接上了,

                  連接上數(shù)據(jù)庫之后就可以進行數(shù)據(jù)庫的更新及查詢操作,但是操作的最后數(shù)據(jù)庫連接必須

                  關(guān)閉。

                  例如:ConnectionDeMO02.java

                  import java.sql.Connection ;

                  import java.sql.DriverManager ;

                  import java.sql.SQLException ;

                  public class ConnectionDemo02{

                  // 定義MySQL的數(shù)據(jù)庫驅(qū)動程序

                  public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;

                  // 定義MySQL數(shù)據(jù)庫的連接地址

                  public static final String DBURL = "jdbc:mysql://localhost:3306/mldn" ;

                  // MySQL數(shù)據(jù)庫的連接用戶名

                  public static final String DBUSER = "root" ;

                  // MySQL數(shù)據(jù)庫的連接密碼

                  public static final String DBPASS = "mysqladmin" ;

                  public static void main(String args[]){

                  Connection conn = null ; // 數(shù)據(jù)庫連接

                  try{

                  Class.forName(DBDRIVER) ; // 加載驅(qū)動程序

                  }catch(ClassNotFoundException e){

                  e.printStackTrace() ;

                  }

                  try{

                  conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;

                  }catch(SQLException e){

                  e.printStackTrace() ;

                  }

                  System.out.println(conn) ; // 如果此時可以打印表示連接正常

                  try{

                  conn.close() ; // 數(shù)據(jù)庫關(guān)閉

                  }catch(SQLException e){

                  e.printStackTrace() ;

                  }

                  }

                  }

                  執(zhí)行數(shù)據(jù)庫的更新操作

                  目標:

                  , 可以使用Connection對象取得Statement實例

                  , 可以使用Statement進行數(shù)據(jù)增加、修改、刪除操作

                  Statement接口:

                  數(shù)據(jù)庫可以連接之后,下面就可以進行數(shù)據(jù)庫的具體操作了,如果要想對數(shù)據(jù)庫進行操作,

                  則肯定要使用Statement接口完成,此接口可以使用Connection接口中提供的createStateme

                  5

                  nt()方法實例化。此接口中定義了以下的常用方法:

                  

                  以user表為例,user表的建立如下:

                  

                  范例:InsertDemo01.java

                  import java.sql.Connection ;

                  import java.sql.DriverManager ;

                  import java.sql.Statement ;

                  public class InsertDemo01{

                  // 定義MySQL的數(shù)據(jù)庫驅(qū)動程序

                  public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;

                  // 定義MySQL數(shù)據(jù)庫的連接地址

                  public static final String DBURL = "jdbc:mysql://localhost:3306/mldn" ;

                  // MySQL數(shù)據(jù)庫的連接用戶名

                  public static final String DBUSER = "root" ;

                  // MySQL數(shù)據(jù)庫的連接密碼

                  public static final String DBPASS = "mysqladmin" ;

                  public static void main(String args[]) throws Exception { // 所有的異常拋出

                  Connection conn = null ; // 數(shù)據(jù)庫連接

                  Statement stmt = null ; // 數(shù)據(jù)庫操作

                  Class.forName(DBDRIVER) ; // 加載驅(qū)動程序

                  String sql = "INSERT INTO user(name,password,age,sex,birthday) "+

                  " VALUES ('李興華','www.mldn.cn',30,'男','2008-08-27')" ;

                  conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;

                  stmt = conn.createStatement() ; // 實例化Statement對象

                  stmt.executeUpdate(sql) ; // 執(zhí)行數(shù)據(jù)庫更新操作

                  stmt.close() ; // 關(guān)閉操作

                  6

                  conn.close() ; // 數(shù)據(jù)庫關(guān)閉

                  }

                  }

                  注意:一般JDBC中要進行正著打開,倒著關(guān)閉。

                  ResultSet接口

                  

                  掌握ResultSet接口的主要作用

                  

                  使用ResultSet接口查詢數(shù)據(jù)

                  數(shù)據(jù)庫的操作中要分為更新和查詢操作,查詢操作的時候會將全部的查詢結(jié)果返回給用戶。 使用SQL中的select語句可以將數(shù)據(jù)庫的全部結(jié)果查詢出來,在JDBC的操作中數(shù)據(jù)庫的所有查詢記錄將使用ResultSet進行接收,并使用ResultSet顯示內(nèi)容。

                  

                  在操作的時候使用Statement中的executeQuery()方法進行數(shù)據(jù)庫的查詢操作。此方法的返回值就是ResultSet接口。

                  范例:ResultSetDemo01.java

                  import java.sql.Connection ;

                  import java.sql.DriverManager ;

                  import java.sql.SQLException ;

                  import java.sql.Statement ;

                  import java.sql.ResultSet ;

                  public class ResultSetDemo01{

                  // 定義MySQL的數(shù)據(jù)庫驅(qū)動程序

                  public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;

                  // 定義MySQL數(shù)據(jù)庫的連接地址

                  public static final String DBURL = "jdbc:mysql://localhost:3306/mldn" ;

                  // MySQL數(shù)據(jù)庫的連接用戶名

                  public static final String DBUSER = "root" ;

                  據(jù)庫的連接密碼 // MySQL數(shù)

                  public static final String DBPASS = "mysqladmin" ;

                  public static void main(String args[]) throws Exception {

                  Connection conn = null ; // 數(shù)據(jù)庫連接

                  Statement stmt = null ; // 數(shù)據(jù)庫的操作對象

                  ResultSet rs = null ; // 保存查詢結(jié)果

                  String sql = "SELECT id,name,password,age,sex,birthday FROM user" ;

                  Class.forName(DBDRIVER) ; // 加載驅(qū)動程序

                  conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;

                  stmt = conn.createStatement() ;

                  7

                  rs = stmt.executeQuery(sql) ;

                  while(rs.next()){ // 依次取出數(shù)據(jù)

                  int id = rs.getInt("id") ; // 取出id列的內(nèi)容,也可以通過編號比如rs.getInt(1)獲得

                  String name = rs.getString("name") ; // 取出name列的內(nèi)容

                  String password = rs.getString("password") ; // 取出password列的內(nèi)容

                  int age = rs.getInt("age") ; // 取出age列的內(nèi)容

                  String sex = rs.getString("sex") ; // 取出sex列的內(nèi)容

                  java.util.Date d = rs.getDate("birthday") ; // 取出birthday列的內(nèi)容

                  System.out.print("編號:" + id + ";") ;

                  System.out.print("姓名:" + name + ";") ;

                  System.out.print("密碼:" + password + ";") ;

                  System.out.print("年齡:" + age + ";") ;

                  System.out.print("性別:" + sex + ";") ;

                  System.out.println("生日:" + d + ";") ;

                  System.out.println("-----------------------") ;

                  }

                  rs.close() ;

                  stmt.close() ;

                  conn.close() ; // 數(shù)據(jù)庫關(guān)閉

                  }

                  }

                  PreparedStatement接口

                  , 掌握PreparedStatemen接口的工作原理

                  , 可以使用PreparedStatemen進行數(shù)據(jù)庫的更新及查詢操作

                  PreparedStatemen是Statement的子接口,屬于預處理操作,與直接使用Statement不同的是,PreparedStatemen在操

                  

                  作時,是先在數(shù)據(jù)表之中準

                  備好了一條SQL語句,但是此

                  SQL語句的具體內(nèi)容暫時不設

                  置,而是之后再進行設置,

                  以插入數(shù)據(jù)為例,使用Prep

                  aredStatemen插入數(shù)據(jù)時,數(shù)

                  據(jù)表中的指針首先指向最后一條數(shù)據(jù)之后,但是里面的內(nèi)容不不知道的,而是等待用戶分

                  別設置。

                  PreparedStatemet的基本操作方法

                  8

                  

                  注意:(1)關(guān)于日期的輸入問題,在正常情況下都使用java.util.Date表示日期,但是在PreparedStatement中如果想使用日期則必須使用java.sql.Date類型。

                  (2)在PreparedStatement中定義了setDate()方法,此方法可以設置日期內(nèi)容,但是此方法使用時,后面的Date類型變量是java.sql.Date,而不是java.util.Date,所以如果要想將一個java.util.Date類型的內(nèi)容變?yōu)閖ava.sql.Date類型的內(nèi)容應該使用如下的語句形式: 例如:String birthday=“2011-01-08”;

                  Java.util.Date temp=null;

                  //通過SimpleDateFormat類將一個字符串變?yōu)閖ava.util.Date類型

                  temp=new SimleDateFormat(“YYYY-MM-dd”)。parse(birthday);

                  //通過java.util.Date取出具體的日期數(shù),并將其變?yōu)閖ava.sql.Date類型

                  java.sql.Date bir=new java.sql.Date(temp.getTime());

                  范例:使用PreapredStatement執(zhí)行數(shù)據(jù)庫的插入操作,PreparedStatementDemo01。Java import java.sql.Connection ;

                  import java.sql.DriverManager ;

                  import java.sql.SQLException ;

                  import java.sql.PreparedStatement ;

                  import java.text.SimpleDateFormat ;

                  public class PreparedStatementDemo01 {

                  // 定義MySQL的數(shù)據(jù)庫驅(qū)動程序

                  public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;

                  // 定義MySQL數(shù)據(jù)庫的連接地址

                  public static final String DBURL = "jdbc:mysql://localhost:3306/mldn" ;

                  // MySQL數(shù)據(jù)庫的連接用戶名

                  public static final String DBUSER = "root" ;

                  據(jù)庫的連接密碼 // MySQL數(shù)

                  public static final String DBPASS = "mysqladmin" ;

                  public static void main(String args[]) throws Exception{ // 所有異常拋出

                  Connection conn = null ; // 數(shù)據(jù)庫連接

                  PreparedStatement pstmt = null ; // 數(shù)據(jù)庫操作

                  String name = "李興華" ; // 姓名

                  String password = "www.mldnjava.cn" ; // 密碼

                  int age = 30 ; // 年齡

                  String sex = "男" ; // 性別

                  String birthday = "2007-08-27" ; // 生日

                  java.util.Date temp = null ;

                  9

                  temp = new SimpleDateFormat("yyyy-MM-dd").parse(birthday) ;

                  java.sql.Date bir = new java.sql.Date(temp.getTime()) ;

                  String sql = "INSERT INTO user(name,password,age,sex,birthday) VALUES (?,?,?,?,?) " ;

                  Class.forName(DBDRIVER) ; // 加載驅(qū)動程序

                  conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;

                  pstmt = conn.prepareStatement(sql) ; // 實例化PreapredStatement對象

                  pstmt.setString(1,name) ;

                  pstmt.setString(2,password) ;

                  pstmt.setInt(3,age) ;

                  pstmt.setString(4,sex) ;

                  pstmt.setDate(5,bir) ;

                  int t = pstmt.executeUpdate() ; // 執(zhí)行更新

                  System.out.println(t);

                  pstmt.close() ;

                  conn.close() ; // 數(shù)據(jù)庫關(guān)閉

                  }

                  }

                  范例2:通過PreparedStatement進行查詢操作

                  import java.sql.Connection ;

                  import java.sql.DriverManager ;

                  import java.sql.SQLException ;

                  import java.sql.ResultSet ;

                  import java.sql.PreparedStatement ;

                  import java.text.SimpleDateFormat ;

                  public class PreparedStatementDemo02 {

                  // 定義MySQL的數(shù)據(jù)庫驅(qū)動程序

                  public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;

                  // 定義MySQL數(shù)據(jù)庫的連接地址

                  public static final String DBURL = "jdbc:mysql://localhost:3306/mldn" ;

                  // MySQL數(shù)據(jù)庫的連接用戶名

                  public static final String DBUSER = "root" ;

                  // MySQL數(shù)據(jù)庫的連接密碼

                  public static final String DBPASS = "mysqladmin" ;

                  public static void main(String args[]) throws Exception{ // 所有異常拋出

                  Connection conn = null ; // 數(shù)據(jù)庫連接

                  PreparedStatement pstmt = null ; // 數(shù)據(jù)庫操作

                  String keyWord = "李" ; // 設置查詢關(guān)鍵字

                  ResultSet rs = null ; // 接收查詢結(jié)果

                  String sql = "SELECT id,name,password,age,sex,birthday " +

                  " FROM user WHERE name LIKE ? OR password LIKE ? OR sex LIKE ?" ;

                  Class.forName(DBDRIVER) ; // 加載驅(qū)動程序

                  conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;

                  pstmt = conn.prepareStatement(sql) ; // 實例化PreapredStatement對象

                  pstmt.setString(1,"%"+keyWord+"%") ;

                  10

                  pstmt.setString(2,"%"+keyWord+"%") ;

                  pstmt.setString(3,"%"+keyWord+"%") ;

                  rs = pstmt.executeQuery() ; // 執(zhí)行查詢

                  while(rs.next()){

                  int id = rs.getInt(1) ;

                  String name = rs.getString(2) ;

                  String pass = rs.getString(3) ;

                  int age = rs.getInt(4) ;

                  String sex = rs.getString(5) ;

                  java.util.Date d = rs.getDate(6) ;

                  System.out.print("編號:" + id + ";") ;

                  System.out.print("姓名:" + name + ";") ;

                  System.out.print("密碼:" + pass + ";") ;

                  System.out.print("年齡:" + age + ";") ;

                  System.out.print("性別:" + sex + ";") ;

                  System.out.println("生日:" + d + ";") ;

                  System.out.println("-------------------------") ;

                  }

                  rs.close() ;

                  pstmt.close() ;

                  conn.close() ; // 數(shù)據(jù)庫關(guān)閉

                  }

                  }

                  在開發(fā)中到底是使用PreapredStatemet還是Statement接口操作呢,實際開發(fā)中不會使用Sta

                  tement接口的。因為其采用的是拼湊的SQL語句形式,那么這樣一來就有可能造成SQL的注

                  入漏洞。

                  CallableStatemet接口

                  

                  了解MySQL存儲過程的建立

                  

                  了解存儲過程中參數(shù)傳遞的三種方式

                  

                  了解CallableStatement調(diào)用存儲過程的操作

                  CallableStatement接口的常用方法

                  

                  由于現(xiàn)在在開發(fā)過程中,存儲過程用的是越來越少了,因此制作了解。

                  CallableStatement主要是調(diào)用數(shù)據(jù)庫中的存儲過程,它也是Statement接口的子接口,

                  在使用CallableStatement的時候可以接收過程的返回值。 建立存儲過程:

                  DELIMITER //

                  11

                  DROP PROCEDURE myproc // -- 刪除過程

                  CREATE PROCEDURE myproc(IN p1 int,INOUT p2 int,OUT p3 int)

                  BEGIN

                  SELECT p1,p2,p3 ; -- 輸出p1、p2、p3的內(nèi)容

                  SET p1=10 ;

                  SET p2=20 ;

                  SET p3=30 ;

                  END

                  //

                  DELIMITER ;

                  SET @x1=70 ; -- 定義變量x1,內(nèi)容為70

                  SET @x2=80 ; -- 定義變量x2,內(nèi)容為80

                  CALL myproc(@x1,@x2,@x3) ;

                  SELECT @x1,@x2,@x3 ;

                  范例:

                  import java.sql.Connection ;

                  import java.sql.DriverManager ;

                  import java.sql.SQLException ;

                  import java.sql.CallableStatement ;

                  import java.sql.Types ;

                  public class ProcDemo{

                  // 定義MySQL的數(shù)據(jù)庫驅(qū)動程序

                  public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;

                  // 定義MySQL數(shù)據(jù)庫的連接地址

                  public static final String DBURL = "jdbc:mysql://localhost:3306/mldn" ;

                  // MySQL數(shù)據(jù)庫的連接用戶名

                  public static final String DBUSER = "root" ;

                  // MySQL數(shù)據(jù)庫的連接密碼

                  public static final String DBPASS = "mysqladmin" ;

                  public static void main(String args[]) throws Exception{ // 所有異常拋出

                  Connection conn = null ; // 數(shù)據(jù)庫連接

                  CallableStatement cstmt = null ; // 數(shù)據(jù)庫操作

                  String sql = "{CALL myproc(?,?,?)}" ; // 調(diào)用過程

                  Class.forName(DBDRIVER) ; // 加載驅(qū)動程序

                  conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;

                  cstmt = conn.prepareCall(sql) ;

                  cstmt.setInt(1,70) ; // 設置第一個參數(shù)是70

                  cstmt.setInt(2,80) ; // 設置第二個參數(shù)是80

                  cstmt.registerOutParameter(2,Types.INTEGER) ;

                  cstmt.registerOutParameter(3,Types.INTEGER) ;

                  cstmt.execute() ; // 執(zhí)行過程

                  System.out.println("INOUT的返回值:" + cstmt.getInt(2)) ;

                  12

                  System.out.println("OUT的返回值:" + cstmt.getInt(3)) ;

                  cstmt.close() ;

                  conn.close() ; // 數(shù)據(jù)庫關(guān)閉

                  }

                  }

                  使用元數(shù)據(jù)分析數(shù)據(jù)庫

                  DatabaseMetaData,使用元數(shù)據(jù)可以分析數(shù)據(jù)庫的基本信息,包括版本,數(shù)據(jù)庫的名稱等等,或者得到指定表的主鍵,常用方法包括:

                  

                  范例:

                  import java.sql.Connection ;

                  import java.sql.DriverManager ;

                  import java.sql.SQLException ;

                  import java.sql.DatabaseMetaData ;

                  import java.sql.ResultSet ;

                  public class DatabaseMetaDataDemo{

                  // 定義MySQL的數(shù)據(jù)庫驅(qū)動程序

                  public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;

                  // 定義MySQL數(shù)據(jù)庫的連接地址

                  public static final String DBURL = "jdbc:mysql://localhost:3306/mldn" ;

                  // MySQL數(shù)據(jù)庫的連接用戶名

                  public static final String DBUSER = "root" ;

                  // MySQL數(shù)據(jù)庫的連接密碼

                  public static final String DBPASS = "mysqladmin" ;

                  public static void main(String args[]) throws Exception{ // 所有異常拋出

                  Connection conn = null ; // 數(shù)據(jù)庫連接

                  DatabaseMetaData dmd = null ; // 數(shù)據(jù)庫元數(shù)據(jù)

                  ResultSet rs = null ;

                  Class.forName(DBDRIVER) ; // 加載驅(qū)動程序

                  conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;

                  dmd = conn.getMetaData() ; // 實例化對象

                  System.out.println("數(shù)據(jù)庫名稱:" + dmd.getDatabaseProductName() ) ;

                  System.out.println("數(shù)據(jù)庫版本:" + dmd.getDatabaseMajorVersion() + "."

                  + dmd.getDatabaseMinorVersion()) ;

                  13

                  rs = dmd.getPrimaryKeys(null,null,"user") ; // 取得user表的主鍵

                  while(rs.next()){

                  System.out.println("表類別:" + rs.getString(1)) ;

                  System.out.println("表模式:" + rs.getString(2)) ;

                  System.out.println("表名稱:" + rs.getString(3)) ;

                  System.out.println("列名稱:" + rs.getString(4)) ;

                  System.out.println("主鍵序列號:" + rs.getString(5)) ;

                  System.out.println("主鍵名稱:" + rs.getString(6)) ;

                  }

                  conn.close() ; // 數(shù)據(jù)庫關(guān)閉

                  }

                  }

                  ResultSetMetaData:使用它可以獲取關(guān)于ResultSet對象中列的類型和屬性信息的對象,ResultSetMetaData存儲了ResultSet的MetaData,可以通過以下的方法取得一些ResultSet的信息。

                  

                  范例:

                  import java.sql.Connection ;

                  import java.sql.DriverManager ;

                  import java.sql.SQLException ;

                  import java.sql.ResultSetMetaData ;

                  import java.sql.PreparedStatement ;

                  public class ResultSetMetaDataDemo{

                  // 定義MySQL的數(shù)據(jù)庫驅(qū)動程序

                  public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;

                  // 定義MySQL數(shù)據(jù)庫的連接地址

                  public static final String DBURL = "jdbc:mysql://localhost:3306/mldn" ;

                  // MySQL數(shù)據(jù)庫的連接用戶名

                  public static final String DBUSER = "root" ;

                  // MySQL數(shù)據(jù)庫的連接密碼

                  public static final String DBPASS = "mysqladmin" ;

                  public static void main(String args[]) throws Exception{ // 所有異常拋出

                  Connection conn = null ; // 數(shù)據(jù)庫連接

                  ResultSetMetaData rsmd = null ; // 數(shù)據(jù)庫元數(shù)據(jù)

                  PreparedStatement pstmt = null ;

                  Class.forName(DBDRIVER) ; // 加載驅(qū)動程序

                  conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;

                  String sql = "SELECT id,name,password,age,sex,birthday FROM user" ;

                  pstmt = conn.prepareStatement(sql) ; // 實例化對象

                  14

                  rsmd = pstmt.getMetaData() ;

                  System.out.println("一共返回" + rsmd.getColumnCount() + "條數(shù)據(jù)。") ;

                  if(rsmd.isAutoIncrement(1) ){

                  System.out.println(rsmd.getColumnName(1)+"列是自動增長的。") ;

                  }

                  conn.close() ; // 數(shù)據(jù)庫關(guān)閉

                  }

                  }

                  15

                   

                  


          MPS/MRP與MTO的區(qū)別MIS(管理信息系統(tǒng))和ERP的區(qū)別
          MRP的計算方法ERP系統(tǒng)的作用
          ERP項目效益評估的關(guān)鍵指標什么是MRP/SRP/ BRP
          教師培訓管理系統(tǒng)RFID智能倉庫管理
          金屬物流倉儲管理系統(tǒng)解決方案現(xiàn)代倉庫物資管理設計方案
          開票業(yè)務整合方案及報價單現(xiàn)代物流倉儲設計方案
          c++學生信息管理系統(tǒng)精通MySQL數(shù)據(jù)庫
          mysql delete 操作MySql如何刪除 bin log
          信息發(fā)布:廣州名易軟件有限公司 http://m.jetlc.com
          • 勁爆價:
            不限功能
            不限用戶
            1998元/年

          • 微信客服

            <output id="r87xx"></output>
          1. 
            
            <mark id="r87xx"><thead id="r87xx"><input id="r87xx"></input></thead></mark>
              • 国产精品久久久久久无码红治院 | 亚洲乱码一二三四区国产 | 先锋影音男人资源站 | 超碰香蕉| 欧美日韩一区二区三区电影 | 99re最新视频在线 | 免费操屄网 | 三级片小说视频 | A高清无码 | 国产成人精品视频夜夜嗨 |