24、jdbc操作数据库(1)
生活随笔
收集整理的這篇文章主要介紹了
24、jdbc操作数据库(1)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
什么是jdbc?
看一下官方怎么說,JDBC 英文名Java DataBase Connectivity,使用java連接數據庫的工具,就是一組使用java代碼來執行SQL語句的API。
Jdbc有什么用?
數據庫有多種,并且不同數據庫操作時的方式和語句可能不太一樣,當使用java 代碼控制sql 調用時,不可能每一種數據庫都弄一套 java 的代碼,所以就聲明了一個套操作數據庫的接口,java程序員只需調用這一套接口即可,具體的接口實現由對應的數據庫廠商實現,所以這里就又有了一個新的概念叫做數據庫驅動,這個驅動就是不同數據庫廠商實現 JDBC 接口的類的一個工具包,當時用jdbc操作數據庫時,需要添加對應的數據庫驅動包。
如何使用jdbc?
使用jdbc操作數據庫有以下幾步:
接下來詳細的介紹一下
添加驅動并獲取數據庫連接。不同的數據庫對應的驅動包不一樣,添加驅動包(添加jar包)之后需要通過驅動去獲取一個數據庫連接,沒什么好說的,直接上代碼:
//聲明一個配置文件jdbc.properties #數據庫驅動類 driver=com.mysql.jdbc.Driver #連接數據庫 jdbcUrl=jdbc:mysql://127.0.0.1:3306/fqx_webapp #用戶名 user=root #密碼 password=123456--------------------------------------------------------------//工具類(基本類) public class DBUtil {/*** 獲取配置文件信息* @return*/private static Properties getProperties() {InputStream inputStream = DBUtil.class.getClassLoader().getResourceAsStream("jdbc.properties");Properties properties = new Properties();try {properties.load(inputStream);} catch (IOException e) {e.printStackTrace();}return properties;}/*** 獲取數據庫連接 java.sql.Connection的一個實例* @return*/public static Connection getConnection() {Connection connection = null;Properties properties = getProperties();String driver = properties.getProperty("driver");try {//加載數據庫驅動Class.forName(driver);//使用驅動管理器獲取數據庫連接connection = DriverManager.getConnection(properties.getProperty("jdbcUrl"), properties);} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}return connection;}/*** 釋放資源* @param resultSet* @param statement* @param connection*/public static void close(ResultSet resultSet , Statement statement , Connection connection) {try {if (resultSet != null) {resultSet.close();}if (statement != null) {statement.close();}if (connection != null) {connection.close();}} catch (Exception e) {e.printStackTrace();}}}使用java對象數據庫進行簡單的增、刪、改、查操作,代碼如下:
public class Test {public static void main(String[] args) {Test test = new Test(); // test.insert(); // test.delete(); // test.update();test.query();}//添加public void insert() {//獲取數據庫連接Connection connection = DBUtil.getConnection();//編寫sql,需要傳參數的地方使用 ? 來表示,叫做占位符String sql = "INSERT INTO USER (uname , password) VALUES (? , ?)";PreparedStatement prepareStatement = null;try {//通過數據庫連接獲取數據庫操作對象prepareStatement = connection.prepareStatement(sql);//使用對應的值填充占位符,key是占位符的下標,下標在1開始prepareStatement.setObject(1, "zhangsan");prepareStatement.setObject(2, 18);//發送并sql,返回結果//增刪改可以使用executeUpdate()方法,查詢使用executeQuery()方法int update = prepareStatement.executeUpdate();System.out.println("是否添加成功:"+update);} catch (SQLException e) {e.printStackTrace();} finally {//關閉資源DBUtil.close(null, prepareStatement, connection);}}//刪除public void delete() {Connection connection = DBUtil.getConnection();String sql = "DELETE FROM USER WHERE ID = ?";PreparedStatement prepareStatement = null;try {prepareStatement = connection.prepareStatement(sql);prepareStatement.setObject(1, 3);int update = prepareStatement.executeUpdate();System.out.println("是否刪除成功:"+update);} catch (SQLException e) {e.printStackTrace();} finally {DBUtil.close(null, prepareStatement, connection);}}//修改public void update() {Connection connection = DBUtil.getConnection();String sql = "UPDATE USER SET UNAME = ? WHERE ID = ?";PreparedStatement prepareStatement = null;try {prepareStatement = connection.prepareStatement(sql);prepareStatement.setObject(1, "wangwu");prepareStatement.setObject(2 , 2);int update = prepareStatement.executeUpdate();System.out.println("是否修改成功:"+update);} catch (SQLException e) {e.printStackTrace();} finally {DBUtil.close(null, prepareStatement, connection);}}//查詢public void query() {Connection connection = DBUtil.getConnection();String sql = "SELECT ID,UNAME,PASSWORD FROM USER";PreparedStatement prepareStatement = null;ResultSet resultSet = null;try {prepareStatement = connection.prepareStatement(sql);//獲取到結果集resultSet = prepareStatement.executeQuery();List<Map<String, Object>> list = new ArrayList<>();//返回的相當于一張表,表中有一個指針,當調用resultSet.next()方法時,指針就往后移一次while(resultSet.next()){Map<String, Object> map = new HashMap<>(); //根據對應的字段名獲取結果幾種的值map.put("ID", resultSet.getObject("ID"));map.put("UNAME", resultSet.getObject("UNAME"));map.put("PASSWORD", resultSet.getObject("PASSWORD"));list.add(map);}System.out.println("查詢出的信息:"+list);} catch (SQLException e) {e.printStackTrace();} finally {DBUtil.close(resultSet, prepareStatement, connection);}}}?
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的24、jdbc操作数据库(1)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 上千辆新款特斯拉 Model 3 现身上
- 下一篇: 戴尔 U2424H / HE 显示器开卖