日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

今天打算用JAVA來連接一下MySQL數據庫,這個過程呢真的折騰人啊

先看我寫的代碼:

import java.sql.*; //導入java.sql包
public class Conn { // 創建類Conn
	Connection con; // 聲明Connection對象
	public Connection getConnection() { // 建立返回值為Connection的方法
		try { // 加載數據庫驅動類
			Class.forName("com.mysql.jdbc.Driver");
			System.out.println("數據庫驅動加載成功");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		try { // 通過訪問數據庫的URL獲取數據庫連接對象
			con = DriverManager.getConnection("jdbc:mysql:"+
			"//192.168.43.188:3306/test", "root", "root");
			System.out.println("數據庫連接成功");
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return con; // 按方法要求返回一個Connection對象
	}
	public static void main(String[] args) { // 主方法
		Conn c = new Conn(); // 創建本類對象
		c.getConnection(); // 調用連接數據庫的方法
	}
}

代碼看上去非常簡單,先加載mysql驅動包,加載成功輸出提示,然后連接數據庫,第一個參數是數據庫的URL,第二個參數是數據庫用戶名,第三個毫無疑問是密碼了,好了,一運行bug來了:

java連接Mysql數據庫遇到的bug

 

彈出的錯誤是:我的電腦不被允許連接到這個數據庫,我就懵了,數據庫就在我的電腦上,為什么就不給連接呢?后來一查發現是Mysql不允許遠程連接,但問題是我的是本地連接??!又懵了。后來發現是權限問題,就是數據庫沒有開放相應的權限。

①解決方法:

打開終端,進入mysql

1、先選中mysql中的 ·mysql· 表 
use mysql;
2、更新權限,修改為允許全部連接
update user set host = '%' where user = 'root';
3、查看是否修改成功
select host, user from user;
4、刷新表的權限(或者重啟一次mysql)
flush privileges; 

以上的方法是允許所有的用戶都可以連接到mysql,這個太危險了,只要有了你的數據庫URL,誰都可以連接。我呢就接收不了這樣的結果,所以這個方法就不適合我。后面我一直找解決方法,沒找到,我就先安裝Mysql數據庫吧!安裝數據庫的過程還算挺順利的,也挺快的。當我建完庫,建完表后,插入第一條數據,然后噩夢就來了:

insert into db1(id,name)values(1,'小屁孩');

bug又出現了:

java連接Mysql數據庫遇到的bug

 

它說字符串的值不正確,我學了一個學期的SQL server,就算我再笨也不止于連一條插入數據的sql語句都寫錯吧,我反復檢查,肯定不是我的鍋,不出我所料,代碼沒有問題,又是數據庫搞得鬼,其實不輸入漢字的話,是可以用的,但是我有強迫癥,我必須要它可以輸入漢字,最后又踏上了修bug的道路。首先,MySQL安裝好以后默認的編碼顯示是這樣的:

java連接Mysql數據庫遇到的bug

 

其中value那一列是有兩個值時latin1,后來一查問題就出在這里,很多時候我們寫代碼或者寫文檔的時候出現亂碼就是因為編碼不是UTF-8的,毫無疑問,我要把這兩個值改為UTF-8的,

網上的方法很多,也很雜,還有一些忽悠人的,比如:

set character_set_database=utf8;

這句代碼確實可以改,但是只是改表面的,當你關閉數據庫,再次輸入show variables like ‘character%’;去查詢還是跟上圖是一樣,根本就沒有改到配置。

1.用管理員身份打開cmd:輸入net stop mysql,把MySQL服務停止,打開MySQL安裝目錄,找到my.ini,如果沒有的話,應該有my-default.ini,是一樣的。如果是my-default.ini,建議在當前目錄下復制粘貼一個新文件,重命名為my.ini,然后在文件內添加以下設置,保存即可,然后將其復制到MySQL的bin目錄下

[client]

#設置客戶端字符集

default-character-set=utf8

[mysqld]

#設置服務器字符集為utf8

character_set_server=utf8

2.然后,在回到cmd,輸入net start mysql,啟動服務器,順利的話,就可以啟動成功。然后新開一個cmd窗口,連接mysql,再次查看編碼方式即都變為utf-8。

以上的兩個方法我都試過了,然并卵,這兩個方法都是不行的,你們不用試了。網上幾乎所有的方法都是改my.ini配置文件,但是沒多少個是可以,我差不多要絕望了,java那邊還沒弄好,數據庫這邊又出問題。這個問題我折騰了好久,內心還是很想解決,但是這個時候我已經錯過了飯點了,從下午4點開始到8點鐘,我沒吃過東西也沒有喝過水,我內心其實很想繼續找bug的,但是我的身體不允許,我就先去吃點東西。

轉機

在去的路上,我還是惦記著那個bug,我打開了csdn,搜到了這樣的一句代碼:

alter table 'tablename' convert to character set utf8;

這句代碼就是修改一張表的所有字段的編碼格式,我當時想,既然能修改,那創建表的時候應該可以選擇編碼格式啊。當時心里想還有最后一絲希望,趕緊吃完回去試一下,不出我所料,果然成功了。如下圖:

java連接Mysql數據庫遇到的bug

 

在創建數據庫的時候,collation那個位置是可以選擇編碼格式的,一開始是latin1格式的,我選了一個utf8的試了一下,如下圖:

java連接Mysql數據庫遇到的bug

 

插入的名字是小屁孩,性別男。查看一下,成功了。

java連接Mysql數據庫遇到的bug

 

現在才稍微開心了一點,終于解決了這個大bug了,這個問題解決之后,我又開始征戰java了,發現前面遇到的權限問題還有一個解決方法,就是在數據庫中給用戶授權,這樣既安全又可以連上,代碼如下:

2.解決方法:

1、指定賬戶連接(mysql默認賬戶名是 root):

假如:賬戶名是:account 密碼是:accountPassword

GRANT ALL PRIVILEGES ON *.* TO 'account'@'%' IDENTIFIED BY 'accountPassword' WITH GRANT OPTION;

2、指定IP地址連接

假如本地IP地址為:192.168.3.67 使用密碼:ipPassword登錄

GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.3.67' IDENTIFIED BY 'ipPassword' WITH GRANT OPTION;

以上方式執行完后,都需要刷新一次mysql的權限表,或者重啟一次mysql

flush privileges; 

3.解決方法:

后面我還發現了一種解決方法,就是把數據庫連接路徑中的ip改為localhost,它會自動獲取你主機的地址,又不需要權限,局域網和廣域網都能用,代碼如下:

con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "root");

總結一下:連接數據庫有3種方法,可以直接開最高權限,可以單獨授權,可以用localhost關鍵字。

找完bug的時候,已經晚上11點了,連續看了7個小時的電腦,眼睛已經撐不住了??赡苡腥藭f我鉆牛角尖、固執,我覺得吧,學編程就是不斷的折騰自己,越狠越好,永不放棄那就是對的,就算在吃飯的路上也不要浪費那一點時間,因為靈感和運氣就在這個時候會來的,哈哈哈!

請關注我公眾號??!

分享到:
標簽:java Mysql
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定