MySQL安裝與idea的連接實現
MySQL安裝與idea的連接
--編輯my.ini配置文件內容(Mysql 8.0以上不需要,直接安裝即可) [mysql] # 設置mysql客戶端默認字符集 default-character-set=utf8 [mysqld] #設置3306端口 port = 3306 # 設置mysql的安裝目錄 basedir=E:\MySQL5.7.13\mysql-5.7.13-winx64 # 設置mysql數據庫的數據的存放目錄 datadir=E:\MySQL5.7.13\mysql-5.7.13-winx64\data # 允許最大連接數 max_connections=200 # 服務端使用的字符集默認為8比特編碼的latin1字符集 character-set-server=utf8 # 創建新表時將使用的默認存儲引擎 default-storage-engine=INNODB # 安裝好後, 免密碼進入mysql skip-grant-tables --用管理員身份運行cmd,輸入命令 //安裝mysql mysqld -install //安裝成功後,初始化數據文件 mysqld --initialize-insecure --user=mysql //進入mysql管理界面 mysql -u root-p //修改密碼 update mysql.user set password=password('新密碼') where user='root'; //mysql8修改密碼 alter user 'root'@'localhost' identified by '密碼'
Mysql與idea進行連接
1.導入數據庫驅動
點擊連接進行下載:(mysql驅動)
https://github.com/epochong/mysql-connector-java-8.0.16.git
下載後在idea目錄下新建lib目錄,將下載好的驅動移動到lib目錄下,並右擊點擊添加為庫,再次點擊驅動文件,若能展開,則驅動安裝成功。
連接過程若出現驅動問題,需要註意查看驅動是否添加為庫,英文版(add as library),查看驅動版本的問題(下載驅動需要對應與數據庫,例mysql下載mysql驅動,sql server下載的是sql server驅動,查看是否在同一包下,有時候不在同一包下會找不到驅動)。
2.連接數據庫(最基本的連接方法)
package jdbc_excise; import java.sql.*; public class Jdbc { public static void main(String[] args) throws SQLException { try { Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost:3306/student?useUnicode=true&characterEncoding=utf8&useSSL=false"; //通用模板:jdbc:數據庫名字://地址:端口/實際使用數據庫名稱?附加參數 String username = "root"; String password = "123456"; Connection connection = DriverManager.getConnection(url,username,password); Statement statement = connection.createStatement(); //執行sql查詢語句 String sql = "select * from student"; ResultSet resultSet = statement.executeQuery(sql); while (resultSet.next()){ System.out.println("Sno="+resultSet.getObject("Sno")); } resultSet.close(); statement.close(); connection.close(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } }
**附狂神教程中安全連接解決辦法 **
jdbc:mysql://localhost:3306/student?useUnicode=true&characterEncoding=utf8&useSSL=false
若mysql版本高於驅動版本,則需要將安全連接置為false;置為true會報錯。
封裝工具類連接數據庫
編寫配置文件
--新建配置文件:db.properties-- driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/student?useUnicode=true&characterEncoding=utf8&useSSL=false username=root password=123456
封裝工具類
package connect_jdbc.utils; import java.io.IOException; import java.io.InputStream; import java.sql.*; import java.util.Properties; public class JdbcUtils { private static String driver = null;; private static String url =null; private static String username = null; private static String password = null; static { try{ //通過反射得到配置文件中的內容 InputStream in = JdbcUtils.class.getClassLoader().getResourceAsStream("db.properties"); Properties properties=new Properties(); properties.load(in); driver = properties.getProperty("driver"); url = properties.getProperty("url"); username = properties.getProperty("username"); password = properties.getProperty("password"); //加載一次驅動 Class.forName(driver); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } //獲取連接 public static Connection getConnection() throws SQLException { return DriverManager.getConnection(url,username,password); } //釋放連接 public static void release(Connection conn, Statement st, ResultSet rs){ if(rs!=null){ try { rs.close(); } catch (SQLException throwables) { throwables.printStackTrace(); } } if(st!=null){ try { st.close(); } catch (SQLException throwables) { throwables.printStackTrace(); } } if(conn!=null){ try { conn.close(); } catch (SQLException throwables) { throwables.printStackTrace(); } } } }
編寫測試類執行sql語句
//執行executeUpdate語句,實現增刪改 package connect_jdbc.utils; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class JdbcTest { public static void main(String[] args) throws SQLException { Connection connection =null; Statement st = null; ResultSet rs =null; try { connection = JdbcUtils.getConnection(); } catch (SQLException throwables) { throwables.printStackTrace(); } st = connection.createStatement(); String sql = "insert into student (sno, sname, ssex, sclass, stel, sgroup, spassword)" + "values (1907040136,'賀子奇','男','1900144','15735116626',3,'123456')"; int i = st.executeUpdate(sql);//返回值為整型,表示有幾行受影響 if(i>0){ System.out.println("插入成功!"); } JdbcUtils.release(connection,st,rs); } }
執行select語句
//執行executeQuery語句,實現查找 package connect_jdbc.utils; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class JdbcSelect { public static void main(String[] args) { Connection connection = null; Statement st = null; ResultSet res = null; try { connection = JdbcUtils.getConnection(); st = connection.createStatement(); String sqls = "select * from student"; res = st.executeQuery(sqls);//返回值為查找的結果集 while (res.next())//進行結果集的輸出 { System.out.println(res.getObject("sno")+" "+res.getObject("sname")); } } catch (SQLException throwables) { throwables.printStackTrace(); } JdbcUtils.release(connection,st,res); } }
sql註入的問題及解決
問題描述:在使用statement函數執行sql操作時,當輸入sql語句為:’ ‘or’1=1’或者’ 'or’values>0’時則會發生恒等於從而繞過查詢語句,會發生將結果集繞過密碼查詢出來,從而形成安全威脅。
解決辦法
將原先的statement函數改用preparedStatement函數,避免瞭sql註入,查詢效率更高。
示例:
package connect_jdbc.utils; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class JdbcTestSe { public static void main(String[] args) { Connection connection =null; PreparedStatement statement = null; ResultSet res = null; try { connection = JdbcUtils.getConnection(); //與statement的區別,要使用?占位符代替參數,進行一次預編譯 String sql = "insert into student (sno, sname, ssex, sclass, stel, sgroup, spassword)" + "values (?,?,?,?,?,?,?)"; //手動給每一個參數(?)賦值 statement=connection.prepareStatement(sql); statement.setString(1,"1907040124"); statement.setString(2,"薛曉軍"); statement.setString(3,"男"); statement.setString(4,"19070144"); statement.setString(5,"15735116626"); statement.setString(6,"3"); statement.setString(7,"123456"); //執行 int i = statement.executeUpdate(); if(i>0) { System.out.println("插入成功!"); } } catch (SQLException throwables) { throwables.printStackTrace(); } JdbcUtils.release(connection,statement,res); } }
到此這篇關於MySQL安裝與idea的連接實現的文章就介紹到這瞭,更多相關MySQL安裝與idea連接內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- JDBC連接MySQL並實現模糊查詢
- JDBC連接的六步實例代碼(與mysql連接)
- Java JDBC自定義封裝工具類的步驟和完整代碼
- 如何用idea數據庫編寫快遞e站
- Java中JDBC的使用教程詳解