使用jdbc訪問mysql數據庫,java jdbc連接mysql數據庫

本文目錄一覽:

如何使用jdbc連接mysql數據庫

用Jdbc連接MySql服務器還是很方便的。

首先,將jdbc導入工程,或者將jdbc放到ClassPath里,這裡我利用Eclipse直接導入jdbc jar文件,不羅嗦了。

然後,制定DriverManager,利用最簡單的方法,Class類的froName直接完成,代碼:

Class.forName(“com.mysql.jdbc.Driver”).newInstance();

然後,實例化一個鏈接Connection,注意用戶名和密碼,有幾個方法可供選擇,這裡我用的是DirverManager類的getConnection(String url, String user, String password)方法。具體使用:DriverManager

例如:Connection conn=DriverManager.getConnection(“jdbc:mysql://localhost/mydatabase”, “root”, “1234”);

下一步,建立用於執行sql語句的Statement,這個容易,一行代碼搞定:

Statement stat=conn.createStatement();

最後就可以利用stat實例執行sql語句了

如何實現JDBC連接mysql數據庫

1.導入mysql數據庫的驅動jar包

如我的導的是mysql-connector-java-5.1.40.jar

2.註冊驅動

註冊驅動代碼為:Class.forName(“com.mysql.jdbc.Driver”)

3.獲取連接

Connection con = DriverManager.getConnection(url,username,password)

其中url為 jdbc:mysql://localhost:3306/xun?useSSL=false,後面那個xun為數據庫的庫名,如果不使用加密的話,?useSSL=false這個其實也可以省略,省略後為jdbc:mysql://localhost:3306/xun,不過最好還是別省略哈。

4.獲取PrepareStatement並發送sql查詢語句

String sql = “select * from user where username = ?”(這個查詢語句為隨便舉的例子哈)

PreparedStatement pst = con.preparedStatement(sql);

pst.setString(1,”zengjiaxun”);

ResultSet rs = pst.executeQuery();

注意,執行查詢使用的是executeQuery()方法,此方法返回的是ResultSet,ResultSet為結果集,封裝了查詢結果。插入,刪除,修改用的是executeUpdate()方法。

pst.clearParameters();

執行sql後記得關閉相應的流。。

怎樣使用jdbc訪問mysql數據庫

JDBC連接MYSQL數據庫:

package cn.outofmemory.test;

import java.sql.Connection;

import java.sql.DriverManager;

public class Mysql {

public static void main(String arg[]) {

try {

Connection con = null; //定義一個MYSQL鏈接對象

Class.forName(“com.mysql.jdbc.Driver”).newInstance(); //MYSQL驅動

con = DriverManager.getConnection(“jdbc:mysql://127.0.0.1:3306/test”, “root”, “root”); //鏈接本地MYSQL

System.out.print(“yes”);

} catch (Exception e) {

System.out.print(“MYSQL ERROR:” + e.getMessage());

}

}

}

Class.forName(“com.mysql.jdbc.Driver”).newInstance(); 我們鏈接的是MYSQL數據庫,所以需要一個MYSQL的數據庫驅動,如果你的環境中沒有安裝,

可以下載:mysql-connector-java-5.1.17-bin.jar JAR包,然後放進jdk1.6.0_37\jre\lib\ext 重啟eclispe 就可以在JRE系統庫中看到。

con = DriverManager.getConnection;(“jdbc:mysql://127.0.0.1:3306/test”, “root”, “root”); 是鏈接數據庫的語句,

返回Connection con;對象。參數格式:(“jdbc:mysql://ip:端口/數據庫名稱”, 用戶名,密碼)

寫入一條數據

package main;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.Statement;

public class Mysql {

/**

* 入口函數

* @param arg

*/

public static void main(String arg[]) {

try {

Connection con = null; //定義一個MYSQL鏈接對象

Class.forName(“com.mysql.jdbc.Driver”).newInstance(); //MYSQL驅動

con = DriverManager.getConnection(“jdbc:mysql://127.0.0.1:3306/test”, “root”, “root”); //鏈接本地MYSQL

Statement stmt; //創建聲明

stmt = con.createStatement();

//新增一條數據

stmt.executeUpdate(“INSERT INTO user (username, password) VALUES (‘init’, ‘123456’)”);

ResultSet res = stmt.executeQuery(“select LAST_INSERT_ID()”);

int ret_id;

if (res.next()) {

ret_id = res.getInt(1);

System.out.print(ret_id);

}

} catch (Exception e) {

System.out.print(“MYSQL ERROR:” + e.getMessage());

}

}

}

stmt.executeUpdate INSERT; DELETE; UPDATE;語句都用executeUpdate函數來操作

stmt.executeQuery SELECT;語句都用stmt.executeQuery函數來操作

ResultSet res = stmt.executeQuery;(“select LAST;_INSERT_ID()”);

查詢最後插入數據的ID號,返回ResultSet res;對象

刪除和更新數據

package main;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.Statement;

public class Mysql {

/**

* 入口函數

* @param arg

*/

public static void main(String arg[]) {

try {

Connection con = null; //定義一個MYSQL鏈接對象

Class.forName(“com.mysql.jdbc.Driver”).newInstance(); //MYSQL驅動

con = DriverManager.getConnection(“jdbc:mysql://127.0.0.1:3306/test”, “root”, “root”); //鏈接本地MYSQL

Statement stmt; //創建聲明

stmt = con.createStatement();

//新增一條數據

stmt.executeUpdate(“INSERT INTO user (username, password) VALUES (‘init’, ‘123456’)”);

ResultSet res = stmt.executeQuery(“select LAST_INSERT_ID()”);

int ret_id;

if (res.next()) {

ret_id = res.getInt(1);

System.out.print(ret_id);

}

//刪除一條數據

String sql = “DELETE FROM user WHERE id = 1”;

long deleteRes = stmt.executeUpdate(sql); //如果為0則沒有進行刪除操作,如果大於0,則記錄刪除的條數

System.out.print(“DELETE:” + deleteRes);

//更新一條數據

String updateSql = “UPDATE user SET username = ‘xxxx’ WHERE id = 2”;

long updateRes = stmt.executeUpdate(updateSql);

System.out.print(“UPDATE:” + updateRes);

} catch (Exception e) {

System.out.print(“MYSQL ERROR:” + e.getMessage());

}

}

}

刪除和更新數據都使用stmt.executeUpdate函數。

刪除和更新數據都會返回一個Long的結果,如果為0,則刪除或者更新失敗,如果大於0則是操作刪除的記錄數

查詢語句

package main;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.ResultSetMetaData;

import java.sql.Statement;

public class Mysql {

/**

* 入口函數

* @param arg

*/

public static void main(String arg[]) {

try {

Connection con = null; //定義一個MYSQL鏈接對象

Class.forName(“com.mysql.jdbc.Driver”).newInstance(); //MYSQL驅動

con = DriverManager.getConnection(“jdbc:mysql://127.0.0.1:3306/test”, “root”, “root”); //鏈接本地MYSQL

Statement stmt; //創建聲明

stmt = con.createStatement();

//新增一條數據

stmt.executeUpdate(“INSERT INTO user (username, password) VALUES (‘init’, ‘123456’)”);

ResultSet res = stmt.executeQuery(“select LAST_INSERT_ID()”);

int ret_id;

if (res.next()) {

ret_id = res.getInt(1);

System.out.print(ret_id);

}

//刪除一條數據

String sql = “DELETE FROM user WHERE id = 1”;

long deleteRes = stmt.executeUpdate(sql); //如果為0則沒有進行刪除操作,如果大於0,則記錄刪除的條數

System.out.print(“DELETE:” + deleteRes);

//更新一條數據

String updateSql = “UPDATE user SET username = ‘xxxx’ WHERE id = 2”;

long updateRes = stmt.executeUpdate(updateSql);

System.out.print(“UPDATE:” + updateRes);

//查詢數據並輸出

String selectSql = “SELECT * FROM user”;

ResultSet selectRes = stmt.executeQuery(selectSql);

while (selectRes.next()) { //循環輸出結果集

String username = selectRes.getString(“username”);

String password = selectRes.getString(“password”);

System.out.print(“\r\n\r\n”);

System.out.print(“username:” + username + “password:” + password);

}

} catch (Exception e) {

System.out.print(“MYSQL ERROR:” + e.getMessage());

}

}

}

查詢語句使用stmt.executeQuery函數

rs.absolute() //絕對位置,負數表示從後面數

rs.first()第一條

rs.last()最後一條

rs.previoust()前一條

rs.next()後一條

rs.beforeFirst()第一條之前

rs.afterLast()最後之後

rs.isFirst(),rs.isLast(),rs.isBeforeFirst(),rs.isAfterLast

使用jdbc連接mysql為什麼報錯?

當我用JDBC連接MySql數據庫時,編譯報了如下錯誤:

錯誤1:

Loading class `com.mysql.jdbc.Driver’. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver’. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.

這要求我們註冊驅動時,把Class.forName(“com.mysql.jdbc.Driver”);改成 Class.forName(“com.mysql.cj.jdbc.Driver”);

當我信息滿滿的修改之後重新編譯時,再次出現了錯誤:

錯誤2:

Fri Feb 22 08:55:38 CST 2019 WARN: Establishing SSL connection without server’s identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn’t set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to ‘false’. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.

這要求我們在設置url參數時,將useSSL=false,修改後 jdbc:mysql://localhost:3306/ds3?useSSL=false

當我修改後,本以為這下應該沒問題了,沒想到,再一次出現了問題

錯誤3:

Exception in thread “main” java.sql.SQLException: The server time zone value ‘Öйú±ê׼ʱ¼ä’ is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.

這要求我們修改時區,修改成jdbc:mysql://localhost:3306/ds3?useSSL=falseserverTimezone=UTC

終於,不在報錯誤了。

錯誤4:當我們配置xml文件時,要把轉為其本身的轉義字符

配置properties文件的urlurl=jdbc:mysql:///ds3?useSSL=falseserverTimezone=UTC配置xml文件的urlproperty name=”url”jdbc:mysql://localhost:3306/ds3?useSSL=falseserverTimezone=UTC/property

怎麼通過jdbc連接mysql數據庫

•創建一個以JDBC連接數據庫的程序,包含7個步驟:

1、加載JDBC驅動程序:

在連接數據庫之前,首先要加載想要連接的數據庫的驅動到JVM(Java虛擬機),

這通過java.lang.Class類的靜態方法forName(String className)實現。

例如:

try{

//加載MySql的驅動類

Class.forName(“com.mysql.jdbc.Driver”) ;

}catch(ClassNotFoundException e){

System.out.println(“找不到驅動程序類 ,加載驅動失敗!”);

e.printStackTrace() ;

}

成功加載後,會將Driver類的實例註冊到DriverManager類中。

2、提供JDBC連接的URL

•連接URL定義了連接數據庫時的協議、子協議、數據源標識。

•書寫形式:協議:子協議:數據源標識

協議:在JDBC中總是以jdbc開始

子協議:是橋連接的驅動程序或是數據庫管理系統名稱。

數據源標識:標記找到數據庫來源的地址與連接端口。

例如:(MySql的連接URL)

jdbc:mysql:

//localhost:3306/test?useUnicode=truecharacterEncoding=gbk ;

useUnicode=true:表示使用Unicode字符集。如果characterEncoding設置為

gb2312或GBK,本參數必須設置為true 。characterEncoding=gbk:字符編碼方式。

3、創建數據庫的連接

•要連接數據庫,需要向java.sql.DriverManager請求並獲得Connection對象,

該對象就代表一個數據庫的連接。

•使用DriverManager的getConnectin(String url , String username ,

String password )方法傳入指定的欲連接的數據庫的路徑、數據庫的用戶名

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/184599.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-25 17:25
下一篇 2024-11-25 17:25

相關推薦

  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • 如何修改mysql的端口號

    本文將介紹如何修改mysql的端口號,方便開發者根據實際需求配置對應端口號。 一、為什麼需要修改mysql端口號 默認情況下,mysql使用的端口號是3306。在某些情況下,我們需…

    編程 2025-04-29
  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Bean加載過程

    Java Bean加載過程涉及到類加載器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean加載的過程。 一、類加載器 類加載器是Java虛擬機…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發佈。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Python 常用數據庫有哪些?

    在Python編程中,數據庫是不可或缺的一部分。隨着互聯網應用的不斷擴大,處理海量數據已成為一種趨勢。Python有許多成熟的數據庫管理系統,接下來我們將從多個方面介紹Python…

    編程 2025-04-29
  • Java判斷字符串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字符串中是否存在多個指定字符: 一、字符串遍歷 字符串是Java編程中非常重要的一種數據類型。要判斷字符串中是否存在多個指定字符…

    編程 2025-04-29
  • openeuler安裝數據庫方案

    本文將介紹在openeuler操作系統中安裝數據庫的方案,並提供代碼示例。 一、安裝MariaDB 下面介紹如何在openeuler中安裝MariaDB。 1、更新軟件源 sudo…

    編程 2025-04-29

發表回復

登錄後才能評論