您好,登錄后才能下訂單哦!
今天小編給大家分享一下Java和Scala中怎么使用數(shù)據(jù)庫進(jìn)行增刪查改操作的相關(guān)知識點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
這里的Scala不是maven工程所以要找到項(xiàng)目結(jié)構(gòu)(快捷鍵:同時(shí)按住Ctrl+shift+Alt+s)在模塊里面添加添加MySQL的jar包,如果是Maven工程可以直接在pom里面直接加即可
實(shí)現(xiàn)操作數(shù)據(jù)庫需要兩個(gè)類,一個(gè)用于測試的Demo,一個(gè)用于實(shí)現(xiàn)增刪查改的Util方法
在MysqlDemo在這里需要用到伴生類和伴生對象,伴生類主要是實(shí)現(xiàn)連接數(shù)據(jù)庫
class MysqlDemo { // 連接數(shù)據(jù)庫 底層原理還是jdbc //驅(qū)動名稱 var driver = "com.mysql.cj.jdbc.Driver" // 訪問MySQL服務(wù)器,通過3306端口訪問mysql數(shù)據(jù)庫 var url = "jdbc:mysql://192.168.152.184:3306/exam" //用戶名 var user = "root" //密碼 var password = "123456" //輔助構(gòu)造器 def this(driver: String, url: String, user: String, pwd: String) { this() this.driver = driver this.url = url this.user = user this.password = pwd } }
伴生對象則主要是實(shí)現(xiàn)操作數(shù)據(jù)庫 ,需要先實(shí)現(xiàn)apply方法,主函數(shù)里面創(chuàng)建對象調(diào)用apply方法,調(diào)用連接方法和釋放資源
object MysqlDemo { // 實(shí)現(xiàn)apply方法 def apply(): MysqlDemo = new MysqlDemo() def apply(driver: String, url: String, user: String, pwd: String): MysqlDemo = new MysqlDemo(driver, url, user, pwd) def main(args: Array[String]): Unit = { //創(chuàng)建對象,調(diào)用apply方法 val demo = MysqlDemo() //導(dǎo)入MySQLUtil包 import MysqlUtil._ //調(diào)用創(chuàng)建連接的方法 demo.conn() // 調(diào)用釋放資源方法 demo.close(connection) /**操作數(shù)據(jù)庫代碼*/ }
Util則需要先初始化數(shù)據(jù)庫連接,注冊驅(qū)動,得到數(shù)據(jù)庫連接,釋放資源
import java.sql.{Connection, DriverManager, PreparedStatement, ResultSet} object MysqlUtil { implicit class MysqlOp(obj: MysqlDemo) { //初始化數(shù)據(jù)連接 private var connection: Connection = _ def conn(): Connection = { //注冊driver Class.forName(obj.driver) //得到數(shù)據(jù)庫連接 val connection: Connection = DriverManager.getConnection(obj.url, obj.user, obj.password) connection } //釋放資源 def close(conn: Connection): Unit = { if (conn != null) { conn.close() } } }
準(zhǔn)備工作已做完下面要實(shí)現(xiàn)對數(shù)據(jù)庫的增刪查改
//Util代碼 //添加數(shù)據(jù)方法一 def insertStudent: Int = { val insertSqlStr = "insert into student(name, age, gender, telephone, email, classid)" + "values ('周七', 6, '男', '13888888888', '346497@qq.com', 2)" val i: Int = conn().createStatement.executeUpdate(insertSqlStr) i } //Demo測試代碼 //添加數(shù)據(jù)方法一 val i: Int = demo.insertStudent if (i == 1) { println("添加成功") } else if (i == 0) { println("添加失敗") }
//Util代碼 //添加數(shù)據(jù)方法二 def insertStudent(name: String, age: Int, gender: String, telephone: String, email: String, classid: Int): Int = { val insertSqlStr = "insert into student(id,name, age, gender, telephone, email, classid)" + "values (null,?,?,?,?,?,?)" val preStmt: PreparedStatement = conn().prepareStatement(insertSqlStr) preStmt.setString(1, name) preStmt.setInt(2, age) preStmt.setString(3, gender) preStmt.setString(4, telephone) preStmt.setString(5, email) preStmt.setInt(6, classid) val i: Int = preStmt.executeUpdate() i } //Demo測試代碼 //添加數(shù)據(jù)方法二 val i: Int = demo.insertStudent("aaa", 18, "男", "12345678910", "34649756@qq.com", 1) if (i == 1) { println("添加成功") } else if (i == 0) { println("添加失敗") }
//Util代碼 def deleteStudent(id: Int): Int = { val deleteSql = "delete from student where id= ?" val preStmt: PreparedStatement = conn().prepareStatement(deleteSql) preStmt.setInt(1, id) val i: Int = preStmt.executeUpdate() i } //Demo測試代碼 val i: Int = demo.deleteStudent(21) if (i == 1) { println("刪除成功") } else if (i == 0) { println("刪除失敗") }
//Util代碼 def selectStudent: Unit = { val selectSql = "select id,name, age, gender, telephone, email, classid from student" val rs: ResultSet = conn().createStatement().executeQuery(selectSql) println("學(xué)號\t姓名\t年齡\t性別\t手機(jī)號\t郵箱\t班級編號") while (rs.next()) { val id: Int = rs.getInt("id") val name: String = rs.getString("name") val age: Int = rs.getInt("age") val gender: String = rs.getString("gender") val telephone: String = rs.getString("telephone") val email: String = rs.getString("email") val classid: String = rs.getString("classid") println(id + "\t" + name + "\t" + age + "\t" + gender + "\t" + telephone + "\t" + email + "\t" + classid) } } //Demo測試代碼 demo.selectStudent
//Util代碼 def updateStudent(id: Int, name: String, age: Int, gender: String, telephone: String, email: String, classid: Int): Int = { val updateSql = "update student set name=?," + "age=?, " + "gender=?," + "telephone=?," + "email=?, " + "classid=? where id=?" val preStmt: PreparedStatement = conn().prepareStatement(updateSql) preStmt.setString(1, name) preStmt.setInt(2, age) preStmt.setString(3, gender) preStmt.setString(4, telephone) preStmt.setString(5, email) preStmt.setInt(6, classid) preStmt.setInt(7, id) val i: Int = preStmt.executeUpdate() i } //Demo測試代碼 val i: Int = demo.updateStudent(22, "test", 25, "女", "123456789", "369852@qq.com", 2) if (i == 1) { println("修改成功") } else if (i == 0) { println("修改失敗") }
import java.sql.{Connection, DriverManager, PreparedStatement, ResultSet} object MysqlUtil { implicit class MysqlOp(obj: MysqlDemo) { //初始化數(shù)據(jù)連接 private var connection: Connection = _ def conn(): Connection = { //注冊driver Class.forName(obj.driver) //得到數(shù)據(jù)庫連接 val connection: Connection = DriverManager.getConnection(obj.url, obj.user, obj.password) connection } //釋放資源 def close(conn: Connection): Unit = { if (conn != null) { conn.close() } } //添加數(shù)據(jù)方法一 def insertStudent: Int = { val insertSqlStr = "insert into student(name, age, gender, telephone, email, classid)" + "values ('bbb', 6, '男', '13852277346', '3464975236@qq.com', 2)" val i: Int = conn().createStatement.executeUpdate(insertSqlStr) i } //添加數(shù)據(jù)方法二 def insertStudent(name: String, age: Int, gender: String, telephone: String, email: String, classid: Int): Int = { val insertSqlStr = "insert into student(id,name, age, gender, telephone, email, classid)" + "values (null,?,?,?,?,?,?)" val preStmt: PreparedStatement = conn().prepareStatement(insertSqlStr) preStmt.setString(1, name) preStmt.setInt(2, age) preStmt.setString(3, gender) preStmt.setString(4, telephone) preStmt.setString(5, email) preStmt.setInt(6, classid) val i: Int = preStmt.executeUpdate() i } //刪除數(shù)據(jù) def deleteStudent(id: Int): Int = { val deleteSql = "delete from student where id= ?" val preStmt: PreparedStatement = conn().prepareStatement(deleteSql) preStmt.setInt(1, id) val i: Int = preStmt.executeUpdate() i } //修改數(shù)據(jù) def updateStudent(id: Int, name: String, age: Int, gender: String, telephone: String, email: String, classid: Int): Int = { val updateSql = "update student set name=?," + "age=?, " + "gender=?," + "telephone=?," + "email=?, " + "classid=? where id=?" val preStmt: PreparedStatement = conn().prepareStatement(updateSql) preStmt.setString(1, name) preStmt.setInt(2, age) preStmt.setString(3, gender) preStmt.setString(4, telephone) preStmt.setString(5, email) preStmt.setInt(6, classid) preStmt.setInt(7, id) val i: Int = preStmt.executeUpdate() i } //查詢數(shù)據(jù) def selectStudent: Unit = { val selectSql = "select id,name, age, gender, telephone, email, classid from student" val rs: ResultSet = conn().createStatement().executeQuery(selectSql) println("學(xué)號\t姓名\t年齡\t性別\t手機(jī)號\t郵箱\t班級編號") while (rs.next()) { val id: Int = rs.getInt("id") val name: String = rs.getString("name") val age: Int = rs.getInt("age") val gender: String = rs.getString("gender") val telephone: String = rs.getString("telephone") val email: String = rs.getString("email") val classid: String = rs.getString("classid") println(id + "\t" + name + "\t" + age + "\t" + gender + "\t" + telephone + "\t" + email + "\t" + classid) } } } }
import java.sql.Connection class MysqlDemo { // 連接數(shù)據(jù)庫 底層原理還是jdbc //驅(qū)動名稱 var driver = "com.mysql.cj.jdbc.Driver" // 訪問MySQL服務(wù)器,通過3306端口訪問mysql數(shù)據(jù)庫 var url = "jdbc:mysql://192.168.152.184:3306/exam" //用戶名 var user = "root" //密碼 var password = "123456" //輔助構(gòu)造器 def this(driver: String, url: String, user: String, pwd: String) { this() this.driver = driver this.url = url this.user = user this.password = pwd } } object MysqlDemo { // 實(shí)現(xiàn)apply方法 def apply(): MysqlDemo = new MysqlDemo() def apply(driver: String, url: String, user: String, pwd: String): MysqlDemo = new MysqlDemo(driver, url, user, pwd) def main(args: Array[String]): Unit = { //創(chuàng)建對象,調(diào)用apply方法 val demo = MysqlDemo() //導(dǎo)入MySQLUtil包 import MysqlUtil._ //調(diào)用創(chuàng)建連接的方法 val connection: Connection = demo.conn() // 調(diào)用釋放資源方法 demo.close(connection) //添加數(shù)據(jù)方法一 val i: Int = demo.insertStudent if (i == 1) { println("添加成功") } else if (i == 0) { println("添加失敗") } //添加數(shù)據(jù)方法二 val i: Int = demo.insertStudent("aaa", 18, "男", "12345678910", "34649756@qq.com", 1) if (i == 1) { println("添加成功") } else if (i == 0) { println("添加失敗") } //查詢數(shù)據(jù) demo.selectStudent // 修改數(shù)據(jù) val i: Int = demo.updateStudent(22, "test", 25, "女", "123456789", "369852@qq.com", 2) if (i == 1) { println("修改成功") } else if (i == 0) { println("修改失敗") } //刪除數(shù)據(jù) val i: Int = demo.deleteStudent(21) if (i == 1) { println("刪除成功") } else if (i == 0) { println("刪除失敗") } } }
以上就是“Java和Scala中怎么使用數(shù)據(jù)庫進(jìn)行增刪查改操作”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學(xué)習(xí)更多的知識,請關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。