1. 程式人生 > >idea上執行JDBC程式碼介紹及其配置(mysql版)

idea上執行JDBC程式碼介紹及其配置(mysql版)

跟著慕課網上學著打了一段java的JDBC的程式碼,然後一執行就gg,然後查原因查了幾個小時終於得出瞭解決方案

首先檢查一下是不是缺少mysql connecter,這個百度一下,來到mysql官網,選擇JDBC Driver for MySQL (Connector/J),隨便選一個,下好解壓,提取出裡面jar檔案放進一個放進tomcat的lib目錄下(記住位置),我解壓出來的叫mysql-connector-java-5.1.45-bin

然後來到你寫好java程式碼的頁面,左上角點開有個project structure,點開,選擇modules,選擇dependencies下module source,點選最右邊的小綠色加號,選擇你剛剛解壓出來的jar檔案,這樣jar包就匯入到project裡面了,程式碼應該能執行無誤了,當然要驗證是否連線上了資料庫你先用dos或者navicat在資料庫裡寫張資料表

附上我執行成功的程式碼:

import java.sql.*;
import java.util.*;
public class mys {
    private static final String url="jdbc:mysql://localhost:3306/test";//test為我的資料庫的名字
    private static final String user="root";//使用者名稱
    private static final String password="root";//密碼
    public static void main(String []args) throws Exception//記住要寫丟擲異常,否則就要用try catch語句
    {
        Class.forName("com.mysql.jdbc.Driver");//載入驅動
        Connection con=DriverManager.getConnection(url,user,password);//連線資料庫
        Statement stm=con.createStatement();
        ResultSet re=stm.executeQuery("select * from inf");//執行詢問語句,re中儲存結果的集合
        while(re.next())//遍歷結果
        {
            System.out.println(re.getString("name")+","+re.getInt("age")+","+re.getInt("tel"));//當然你的資料表要有這幾個屬性
        }
    }
}

然後介紹一些常用的jdbc連線sql語句:

Class.forName("com.mysql.jdbc.Driver");這句話的意思是載入mysql的驅動程式,不同的資料庫這句話不同

Connection con=DriverManager.getConnection(url,user,password)這句話是獲得連線資料庫後返回的物件

url裡面放的是jdbc:mysql://localhost:3306/+你要操作的資料庫名字,user和password顯而易見是你登入資料庫的賬號密碼

createStatement():返回向資料庫傳送sql的statement物件,該物件用於接收對資料庫加入增刪查改的操作語句。

prepareStatement(sql) :建立向資料庫傳送預編譯sql的PrepareSatement物件,該物件只是預編譯生成,用萬用字元?代替不確定的欄位,後面再用一系列的set函式將?替換掉,在呼叫execute函式之前是不會生成Satement物件的

重點介紹statement介面(常用):

Statement:由createStatement建立,用於傳送簡單的SQL語句(不帶引數)。

PreparedStatement :繼承自Statement介面,由preparedStatement建立,用於傳送含有一個或多個引數的SQL語句。PreparedStatement物件比Statement物件的效率更高

並且可以防止SQL注入,所以我們一般都使用PreparedStatement。

常用statement方法:

execute(String sql):執行語句,返回是否有結果集

executeQuery(String sql):執行select語句,返回ResultSet結果集。

executeUpdate(String sql):執行insert/update/delete操作,返回更新的行數。

addBatch(String sql) :把多條sql語句放到一個批處理中。

executeBatch():向資料庫傳送一批sql語句執行。

然後是接收上面方法返回的ResultSet介面:

getString(int index)、getString(String columnName):獲得在資料庫裡是varchar、char等型別的資料物件。

getFloat(int index)、getFloat(String columnName):獲得在資料庫裡是Float型別的資料物件。

getDate(int index)、getDate(String columnName):獲得在資料庫裡是Date型別的資料。

getBoolean(int index)、getBoolean(String columnName):獲得在資料庫裡是Boolean型別的資料。

getObject(int index)、getObject(String columnName):獲取在資料庫裡任意型別的資料。

ResultSet還提供了對結果集進行滾動的方法:

next():移動到下一行

Previous():移動到前一行

absolute(int row):移動到指定行

beforeFirst():移動resultSet的最前面。

afterLast() :移動到resultSet的最後面。

然後介紹一些sql語句的知識:

迷糊查詢:%可以代替0個或多個字元

比如:select * from students where name like '王%' 這個句子可以把表students裡面name符合的王或者王xx(任意數目)的記錄返回,如果是%王%就是查詢包含王的所有記錄

隨機查詢:用Math.random()函式返回一個0-1之間的小數,那麼直接對該數*listsize再用int取整可以獲得集合範圍的一個數字,配合absolute函式可以查詢隨機數字的記錄

預處理語句:上面已經敘述,舉個例子

sql=con.prepareStatement("select * from tb1 where id <?");後面呼叫setInt(1,5);這樣就相當於把第1個問號值修改為了5,然後再呼叫executeUpdate或者executeQuery之類的函式將該命令完成並執行,多個問號也是一樣的,第一個引數index是第index個問號的意思,然後根據對應問號應該填的值選擇set函式,第二個引數為?修改成的值