mysql创建 存储过程 并通过java程序调用该存储过程 create table users_ning(id primary key auto_increment,pwd int); insert into users_ning values(id,1234); insert into users_ning values(id,12345); insert into users_ning values(id,12); insert in
mysql创建 存储过程 并通过java程序调用该存储过程create table users_ning(id primary key auto_increment,pwd int); insert into users_ning values(id,1234); insert into users_ning values(id,12345); insert into users_ning values(id,12); insert into users_ning values(id,123); CREATE PROCEDURE login_ning(IN p_id int,IN p_pwd int,OUT flag int) BEGIN DECLARE v_pwd int; select pwd INTO v_pwd from users_ning where id = p_id; if v_pwd = p_pwd then set flag:=1; else select v_pwd; set flag := 0; end if; END package demo20130528; import java.sql.*; import demo20130526.DBUtils; /** * 测试JDBC API调用过程 * @author tarena * */ public class ProcedureDemo2 { /** * @param args * @throws Exception */ public static void main(String[] args) throws Exception { System.out.println(login(123, 1234)); } /** * 调用过程,实现登录功能 * @param id 考生id * @param pwd 考试密码 * @return if成功:1; if密码错:0; if没有用户:-1 * @throws Exception */ public static int login(int id, int pwd) throws Exception{ int flag = -1; String sql = "{call login_ning(?,?,?)}";//***** Connection conn = DBUtils.getConnMySQL(); CallableStatement stmt = null; try{ stmt = conn.prepareCall(sql); //传递输入参数 stmt.setInt(1, id); stmt.setInt(2, pwd); //注册输出参数,第三个占位符的数据类型是整型 stmt.registerOutParameter(3, Types.INTEGER);//***** //执行过程 stmt.execute(); //获得过程执行后的输出参数 flag = stmt.getInt(3);//***** }catch(Exception e){ e.printStackTrace(); }finally{ stmt.close(); DBUtils.dbClose(); } return flag; } }
package demo20130526; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import java.util.Properties; public class DBUtils { <span style="white-space:pre"> </span>static Connection conn = null; <span style="white-space:pre"> </span>static PreparedStatement stmt = null; <span style="white-space:pre"> </span>static ResultSet rs = null; <span style="white-space:pre"> </span>static Statement st = null; <span style="white-space:pre"> </span>static String username = null; <span style="white-space:pre"> </span>static String password = null; <span style="white-space:pre"> </span>static String url = null; <span style="white-space:pre"> </span>static String driverName = null; <span style="white-space:pre"> </span>public static Connection getConnMySQL() throws Exception {// 连接mysql 返回conn <span style="white-space:pre"> </span>getUrlUserNamePassWordClassNameMySQL(); <span style="white-space:pre"> </span>conn = DriverManager.getConnection(url, username, password); <span style="white-space:pre"> </span>// conn.setAutoCommit(false);设置自动提交为false <span style="white-space:pre"> </span>return conn; <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>public static Connection getConnORCALE() throws Exception {// 连接orcale <span style="white-space:pre"> </span>// 返回conn <span style="white-space:pre"> </span>getUrlUserNamePassWordClassNameORCALE(); <span style="white-space:pre"> </span>conn = DriverManager.getConnection(url, username, password); <span style="white-space:pre"> </span>// conn.setAutoCommit(false); <span style="white-space:pre"> </span>return conn; <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>private static void getUrlUserNamePassWordClassNameORCALE() <span style="white-space:pre"> </span>throws Exception { <span style="white-space:pre"> </span>// 从资源文件 获取 orcale的username password url等信息 <span style="white-space:pre"> </span>Properties pro = new Properties(); <span style="white-space:pre"> </span>File path = new File("src/all.properties"); <span style="white-space:pre"> </span>pro.load(new FileInputStream(path)); <span style="white-space:pre"> </span>String paths = pro.getProperty("filepath"); <span style="white-space:pre"> </span>File file = new File(paths + "orcale.properties"); <span style="white-space:pre"> </span>getFromProperties(file); <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>public static void getUrlUserNamePassWordClassNameMySQL() throws Exception { <span style="white-space:pre"> </span>// 从资源文件 获取mysql的username password url等信息 <span style="white-space:pre"> </span>Properties pro = new Properties(); <span style="white-space:pre"> </span>File path = new File("src/all.properties"); <span style="white-space:pre"> </span>pro.load(new FileInputStream(path)); <span style="white-space:pre"> </span>String paths = pro.getProperty("filepath"); <span style="white-space:pre"> </span>File file = new File(paths + "mysql.properties"); <span style="white-space:pre"> </span>getFromProperties(file); <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>public static void getFromProperties(File file) throws IOException, <span style="white-space:pre"> </span>FileNotFoundException, ClassNotFoundException {// 读资源文件的内容 <span style="white-space:pre"> </span>Properties pro = new Properties(); <span style="white-space:pre"> </span>pro.load(new FileInputStream(file)); <span style="white-space:pre"> </span>username = pro.getProperty("username"); <span style="white-space:pre"> </span>password = pro.getProperty("password"); <span style="white-space:pre"> </span>url = pro.getProperty("url"); <span style="white-space:pre"> </span>driverName = pro.getProperty("driverName"); <span style="white-space:pre"> </span>Class.forName(driverName); <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>public static void dbClose() throws Exception {// 关闭所有 <span style="white-space:pre"> </span>if (rs != null) <span style="white-space:pre"> </span>rs.close(); <span style="white-space:pre"> </span>if (st != null) <span style="white-space:pre"> </span>st.close(); <span style="white-space:pre"> </span>if (stmt != null) <span style="white-space:pre"> </span>stmt.close(); <span style="white-space:pre"> </span>if (conn != null) <span style="white-space:pre"> </span>conn.close(); <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>public static ResultSet getById(String tableName, int id) throws Exception {// 用id来查询结果 <span style="white-space:pre"> </span>st = conn.createStatement(); <span style="white-space:pre"> </span>rs = st.executeQuery("select * from " + tableName + " where id=" + id <span style="white-space:pre"> </span>+ " "); <span style="white-space:pre"> </span>return rs; <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>public static ResultSet getByAll(String sql, Object... obj) <span style="white-space:pre"> </span>throws Exception {// 用关键字 实现查询 关键字额可以任意 <span style="white-space:pre"> </span>sql = sql.replaceAll(";", ""); <span style="white-space:pre"> </span>sql = sql.trim(); <span style="white-space:pre"> </span>stmt = conn.prepareStatement(sql); <span style="white-space:pre"> </span>String[] strs = sql.split("\\?");// 将sql 以? 非开 <span style="white-space:pre"> </span>int num = strs.length;// 得到?的个数 <span style="white-space:pre"> </span>int size = obj.length; <span style="white-space:pre"> </span>for (int i = 1; i stmt.setObject(i, obj[i - 1]);// 数组下标从0开始 <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>if (size for (int k = size + 1; k stmt.setObject(k, null);// 数组下标从0开始 <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>rs = stmt.executeQuery(); <span style="white-space:pre"> </span>return rs; <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>public static void doInsert(String sql) throws SQLException {// 传入 sql 语句 <span style="white-space:pre"> </span>// 实现插入操作 <span style="white-space:pre"> </span>st = conn.createStatement(); <span style="white-space:pre"> </span>st.execute(sql); <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>public static void doInsert(String sql, Object... args) throws Exception {// 传入参数 <span style="white-space:pre"> </span>// 利用 <span style="white-space:pre"> </span>// PreparedStatement <span style="white-space:pre"> </span>// 实现插入 <span style="white-space:pre"> </span>// 传入的参数是任意多个 因为有Object 。。。args <span style="white-space:pre"> </span>int size = args.length;// 获得 Object ...obj 传过来的参数的个数 <span style="white-space:pre"> </span>stmt = conn.prepareStatement(sql); <span style="white-space:pre"> </span>for (int i = 1; i stmt.setObject(i, args[i - 1]);// 数组下标从0开始 <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>stmt.execute(); <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>public static int doUpdate(String sql) throws Exception {// 传入 sql 实现更新操作 <span style="white-space:pre"> </span>st = conn.createStatement(); <span style="white-space:pre"> </span>int num = st.executeUpdate(sql); <span style="white-space:pre"> </span>return num; <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>public static void doUpdate(String sql, Object... obj) throws Exception { <span style="white-space:pre"> </span>// 传入参数 利用 PreparedStatement实现更新 <span style="white-space:pre"> </span>// 传入的参数是任意多个 因为有Object 。。。args <span style="white-space:pre"> </span>int size = obj.length;// 获得 Object ...obj 传过来的参数的个数 <span style="white-space:pre"> </span>stmt = conn.prepareStatement(sql); <span style="white-space:pre"> </span>for (int i = 1; i stmt.setObject(i, obj[i - 1]);// 数组下标从0开始 <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>stmt.executeUpdate(sql); <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>public static boolean doDeleteById(String tableName, int id) <span style="white-space:pre"> </span>throws SQLException {// 删除记录 by id <span style="white-space:pre"> </span>st = conn.createStatement(); <span style="white-space:pre"> </span>boolean b = st.execute("delete from " + tableName + " where id=" + id <span style="white-space:pre"> </span>+ ""); <span style="white-space:pre"> </span>return b; <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>public static boolean doDeleteByAll(String sql, Object... args) <span style="white-space:pre"> </span>throws SQLException {// 删除记录 可以按任何关键字 <span style="white-space:pre"> </span>sql = sql.replaceAll(";", ""); <span style="white-space:pre"> </span>sql = sql.trim(); <span style="white-space:pre"> </span>stmt = conn.prepareStatement(sql); <span style="white-space:pre"> </span>String[] strs = sql.split("\\?");// 将sql 以? 非开 <span style="white-space:pre"> </span>int num = strs.length;// 得到?的个数 <span style="white-space:pre"> </span>int size = args.length; <span style="white-space:pre"> </span>for (int i = 1; i stmt.setObject(i, args[i - 1]);// 数组下标从0开始 <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>if (size for (int k = size + 1; k stmt.setObject(k, null);// 数组下标从0开始 <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>boolean b = stmt.execute(); <span style="white-space:pre"> </span>return b; <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>public static void getMetaDate() throws Exception {// 获取数据库元素数据 <span style="white-space:pre"> </span>conn = DBUtils.getConnORCALE(); <span style="white-space:pre"> </span>DatabaseMetaData dmd = conn.getMetaData(); <span style="white-space:pre"> </span>System.out.println(dmd.getDatabaseMajorVersion()); <span style="white-space:pre"> </span>System.out.println(dmd.getDatabaseProductName()); <span style="white-space:pre"> </span>System.out.println(dmd.getDatabaseProductVersion()); <span style="white-space:pre"> </span>System.out.println(dmd.getDatabaseMinorVersion()); <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>public static String[] getColumnNamesFromMySQL(String sql) throws Exception { <span style="white-space:pre"> </span>conn = DBUtils.getConnMySQL(); <span style="white-space:pre"> </span>return getColumnName(sql); <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>public static String[] getColumnNamesFromOrcale(String sql) <span style="white-space:pre"> </span>throws Exception { <span style="white-space:pre"> </span>conn = DBUtils.getConnORCALE(); <span style="white-space:pre"> </span>return getColumnName(sql); <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>private static String[] getColumnName(String sql) throws Exception {// 返回表中所有的列名 <span style="white-space:pre"> </span>conn = DBUtils.getConnORCALE(); <span style="white-space:pre"> </span>st = conn.createStatement(); <span style="white-space:pre"> </span>rs = st.executeQuery(sql); <span style="white-space:pre"> </span>ResultSetMetaData rsmd = rs.getMetaData(); <span style="white-space:pre"> </span>int num = rsmd.getColumnCount(); <span style="white-space:pre"> </span>System.out.println("ColumnCount=" + num); <span style="white-space:pre"> </span>String[] strs = new String[num]; <span style="white-space:pre"> </span>// 显示列名 <span style="white-space:pre"> </span>for (int i = 1; i String str = rsmd.getColumnName(i); <span style="white-space:pre"> </span>strs[i - 1] = str; <span style="white-space:pre"> </span>System.out.print(str + "\t"); <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>return strs; <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>public static void getColumnDataFromMySQL(String sql) throws Exception {// 输出表中的数据 <span style="white-space:pre"> </span>conn = DBUtils.getConnMySQL(); <span style="white-space:pre"> </span>getColumnData(sql); <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>public static void getColumnDataFromORCALEL(String sql) throws Exception {// 输出表中的数据 <span style="white-space:pre"> </span>conn = DBUtils.getConnORCALE(); <span style="white-space:pre"> </span>getColumnData(sql); <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>public static void getColumnData(String sql) throws Exception {// 输出表中的数据 <span style="white-space:pre"> </span>st = conn.createStatement(); <span style="white-space:pre"> </span>rs = st.executeQuery(sql); <span style="white-space:pre"> </span>ResultSetMetaData rsmd = rs.getMetaData(); <span style="white-space:pre"> </span>System.out <span style="white-space:pre"> </span>.println("\n------------------------------------------------------------------------------------------------------------------------"); <span style="white-space:pre"> </span>while (rs.next()) { <span style="white-space:pre"> </span>for (int i = 1; i System.out.print(rs.getString(i) + "\t"); <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>System.out.println(); <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>System.out <span style="white-space:pre"> </span>.println("------------------------------------------------------------------------------------------------------------------------"); <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>public static void getTableDataFromOrcale(String sql) throws Exception {// 输出表的列名 <span style="white-space:pre"> </span>// 和表中的全部数据 <span style="white-space:pre"> </span>conn = DBUtils.getConnORCALE(); <span style="white-space:pre"> </span>getTableData(sql); <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>public static void getTableDataFromMysql(String sql) throws Exception {// 输出表的列名 <span style="white-space:pre"> </span>// 和表中的全部数据 <span style="white-space:pre"> </span>conn = DBUtils.getConnMySQL(); <span style="white-space:pre"> </span>getTableData(sql); <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>private static void getTableData(String sql) throws SQLException { <span style="white-space:pre"> </span>// getTableDataFromMysql <span style="white-space:pre"> </span>// getTableDataFromOrcale <span style="white-space:pre"> </span>st = conn.createStatement(); <span style="white-space:pre"> </span>rs = st.executeQuery(sql); <span style="white-space:pre"> </span>ResultSetMetaData rsmd = rs.getMetaData(); <span style="white-space:pre"> </span>int num = rsmd.getColumnCount(); <span style="white-space:pre"> </span>System.out.println("ColumnCount=" + num); <span style="white-space:pre"> </span>String[] strs = new String[num]; <span style="white-space:pre"> </span>// 显示列名 <span style="white-space:pre"> </span>for (int i = 1; i String str = rsmd.getColumnName(i); <span style="white-space:pre"> </span>strs[i - 1] = str; <span style="white-space:pre"> </span>System.out.print(str + "\t"); <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>System.out <span style="white-space:pre"> </span>.println("\n------------------------------------------------------------------------------------------------------------------------"); <span style="white-space:pre"> </span>while (rs.next()) { <span style="white-space:pre"> </span>for (int i = 1; i System.out.print(rs.getString(i) + "\t"); <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>System.out.println(); <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>System.out <span style="white-space:pre"> </span>.println("------------------------------------------------------------------------------------------------------------------------"); <span style="white-space:pre"> </span>} }

在數據庫優化中,應根據查詢需求選擇索引策略:1.當查詢涉及多個列且條件順序固定時,使用複合索引;2.當查詢涉及多個列但條件順序不固定時,使用多個單列索引。複合索引適用於優化多列查詢,單列索引則適合單列查詢。

要優化MySQL慢查詢,需使用slowquerylog和performance_schema:1.啟用slowquerylog並設置閾值,記錄慢查詢;2.利用performance_schema分析查詢執行細節,找出性能瓶頸並優化。

MySQL和SQL是開發者必備技能。 1.MySQL是開源的關係型數據庫管理系統,SQL是用於管理和操作數據庫的標準語言。 2.MySQL通過高效的數據存儲和檢索功能支持多種存儲引擎,SQL通過簡單語句完成複雜數據操作。 3.使用示例包括基本查詢和高級查詢,如按條件過濾和排序。 4.常見錯誤包括語法錯誤和性能問題,可通過檢查SQL語句和使用EXPLAIN命令優化。 5.性能優化技巧包括使用索引、避免全表掃描、優化JOIN操作和提升代碼可讀性。

MySQL異步主從復制通過binlog實現數據同步,提升讀性能和高可用性。 1)主服務器記錄變更到binlog;2)從服務器通過I/O線程讀取binlog;3)從服務器的SQL線程應用binlog同步數據。

MySQL是一個開源的關係型數據庫管理系統。 1)創建數據庫和表:使用CREATEDATABASE和CREATETABLE命令。 2)基本操作:INSERT、UPDATE、DELETE和SELECT。 3)高級操作:JOIN、子查詢和事務處理。 4)調試技巧:檢查語法、數據類型和權限。 5)優化建議:使用索引、避免SELECT*和使用事務。

MySQL的安裝和基本操作包括:1.下載並安裝MySQL,設置根用戶密碼;2.使用SQL命令創建數據庫和表,如CREATEDATABASE和CREATETABLE;3.執行CRUD操作,使用INSERT,SELECT,UPDATE,DELETE命令;4.創建索引和存儲過程以優化性能和實現複雜邏輯。通過這些步驟,你可以從零開始構建和管理MySQL數據庫。

InnoDBBufferPool通過將數據和索引頁加載到內存中來提升MySQL數據庫的性能。 1)數據頁加載到BufferPool中,減少磁盤I/O。 2)臟頁被標記並定期刷新到磁盤。 3)LRU算法管理數據頁淘汰。 4)預讀機制提前加載可能需要的數據頁。

MySQL適合初學者使用,因為它安裝簡單、功能強大且易於管理數據。 1.安裝和配置簡單,適用於多種操作系統。 2.支持基本操作如創建數據庫和表、插入、查詢、更新和刪除數據。 3.提供高級功能如JOIN操作和子查詢。 4.可以通過索引、查詢優化和分錶分區來提升性能。 5.支持備份、恢復和安全措施,確保數據的安全和一致性。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

記事本++7.3.1
好用且免費的程式碼編輯器

Dreamweaver CS6
視覺化網頁開發工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具