1、寶塔創建數據庫
在寶塔控制台的軟件管理里邊找到phpMyAdmin,點擊安裝,並且端口號修改為888
2、在寶塔安全里邊放開端口888 和3306
3、雲服務器安全組也同樣放開端口號
4、寶塔點擊數據庫,添加數據庫,創建完成后,點擊權限,選擇所有人
5、數據庫創建完成,自行添加數據
6、數據庫配置完成后,在java web項目中訪問數據庫
定義數據庫屬性
public class StaticVar { //鏈接遠程服務器數據庫 public static final String DB_URL = "jdbc:mysql://服務器id:3306/user?useUnicode=true&characterEncoding=UTF-8"; public static final String USER_NAME = "數據庫名"; public static final String DB_PASSED = "數據庫密碼"; public static final String DRIVER_NAME = "com.mysql.jdbc.Driver"; }
管理類
package student.base; import java.sql.*; public class DBManager { private static DBManager instance; private Connection con; private ResultSet res; private Statement state; public static DBManager getInstance() { if (instance == null) { instance = new DBManager(); } return instance; } /** * 該方法用戶連接數據庫 * * @return 返回Connection的一個實例 */ private Connection getConnection() { try { Class.forName(StaticVar.DRIVER_NAME); con = DriverManager.getConnection(StaticVar.DB_URL, StaticVar.USER_NAME, StaticVar.DB_PASSED); } catch (ClassNotFoundException e) { return null; } catch (SQLException e) { return null; } return con; } /** * 用於查詢sql語句 * * @param sql sql語句 * @return 返回ResultSet集合 */ public ResultSet select(String sql) { con = getConnection(); if (!(con == null)) { try { state = con.createStatement(); res = state.executeQuery(sql); } catch (SQLException e) { return null; } } return res; } /** * 向表中插入一個元素,返回插入后的元素的id * * @param sql * @return */ public int insert(String sql) { int iId = -1; con = getConnection(); if (con != null) { try { state = con.createStatement(); int res = state.executeUpdate(sql, Statement.RETURN_GENERATED_KEYS); if (res != 0) { ResultSet rs = state.getGeneratedKeys(); if (rs.next()) { iId = rs.getInt(1); } } } catch (SQLException e) { iId = -1; } } if (state != null) { try { state.close(); } catch (SQLException e) { } } return iId; } /** * 修改表中的某個元素的數值 * * @param sql sql語句 * @return 元素是否被成功修改 */ public boolean update(String sql) { boolean updated = false; con = getConnection(); if (con != null) { try { state = con.createStatement(); int res = state.executeUpdate(sql); if (res == 0) { updated = false; } else { updated = true; } } catch (SQLException e) { updated = false; } } return updated; } /** * 刪除表中的某一個表項 * * @param sql sql語句 * @return 返回是否刪除成功 */ public boolean delete(String sql) { boolean deleted = false; con = getConnection(); if (con != null) { try { state = con.createStatement(); int res = state.executeUpdate(sql); if (res == 0) { deleted = false; } else { deleted = true; } } catch (SQLException e) { deleted = false; } } return deleted; } public void close() { try { if (res != null) { res.close(); } if (state != null) { state.close(); } if (con != null) { con.close(); con = null; } } catch (SQLException ignored) { } } }
鏈接數據庫,獲取數據,部分代碼如下
if (check.getVersion() != null) { String selectSQL = "select * from story"; String title = null; String content = null; String url = null; list.clear(); try { DBManager dbManager = DBManager.getInstance(); ResultSet rs = dbManager.select(selectSQL); while (rs.next()) { title = rs.getString("title"); content = rs.getString("content"); url = rs.getString("url"); StoryInfo storyInfo = new StoryInfo(); storyInfo.setTitle(title); storyInfo.setContent(content); storyInfo.setUrl(url); list.add(storyInfo); } rs.close(); dbManager.close();
本地調試,編譯,配置了Artifacts,就需要用build Artifacts來編譯
數據獲取成功
7、生成的.war文件上傳到服務器tomcat對應的目錄下 tomcat\webapps
調用數據庫,本地調用正常,服務器報錯 空指針異常
解決辦法:本地java web項目中lib目錄下
mysql-connector-java-5.1.45-bin.jar 和 spring-jdbc-5.2.3.RELEASE.jar復制到服務器tomcat 對應的lib目錄下,問題解決了
8、遇到tomcat輸出信息亂碼,修改辦法如下:
tomcat\conf目錄下logging.properties 文件
java.util.logging.ConsoleHandler.encoding = GBK
即可解決亂碼問題