suchen
HeimJavajavaLernprogrammWie verwende ich die Datenbank zum Hinzufügen, Löschen, Überprüfen und Ändern von Vorgängen in Java und Scala?

添加jar包

这里的Scala不是maven工程所以要找到项目结构(快捷键:同时按住Ctrl+shift+Alt+s)在模块里面添加添加MySQL的jar包,如果是Maven工程可以直接在pom里面直接加即可

Wie verwende ich die Datenbank zum Hinzufügen, Löschen, Überprüfen und Ändern von Vorgängen in Java und Scala?

实现操作数据库需要两个类,一个用于测试的Demo,一个用于实现增删查改的Util方法

在MysqlDemo在这里需要用到伴生类和伴生对象,伴生类主要是实现连接数据库

class MysqlDemo {
  //  连接数据库 底层原理还是jdbc
  //驱动名称
  var driver = "com.mysql.cj.jdbc.Driver"
  //  访问MySQL服务器,通过3306端口访问mysql数据库
  var url = "jdbc:mysql://192.168.152.184:3306/exam"
  //用户名
  var user = "root"
  //密码
  var password = "123456"
  //辅助构造器
  def this(driver: String, url: String, user: String, pwd: String) {
    this()
    this.driver = driver
    this.url = url
    this.user = user
    this.password = pwd
  }
}

伴生对象则主要是实现操作数据库 ,需要先实现apply方法,主函数里面创建对象调用apply方法,调用连接方法和释放资源

object MysqlDemo {
  //  实现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 = {
    //创建对象,调用apply方法
    val demo = MysqlDemo()
    //导入MySQLUtil包
    import MysqlUtil._
    //调用创建连接的方法
    demo.conn()
    // 调用释放资源方法
    demo.close(connection)
/**操作数据库代码*/
}

Util则需要先初始化数据库连接,注册驱动,得到数据库连接,释放资源

import java.sql.{Connection, DriverManager, PreparedStatement, ResultSet}
object MysqlUtil {
  implicit class MysqlOp(obj: MysqlDemo) {
    //初始化数据连接
    private var connection: Connection = _
    def conn(): Connection = {
      //注册driver
      Class.forName(obj.driver)
      //得到数据库连接
      val connection: Connection = DriverManager.getConnection(obj.url, obj.user, obj.password)
      connection
    }
    //释放资源
    def close(conn: Connection): Unit = {
      if (conn != null) {
        conn.close()
      }
    }
}

准备工作已做完下面要实现对数据库的增删查改

添加数据

方法一

//Util代码
//添加数据方法一
    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测试代码
 //添加数据方法一
    val i: Int = demo.insertStudent
    if (i == 1) {
      println("添加成功")
    } else if (i == 0) {
      println("添加失败")
    }

方法二

//Util代码  
   //添加数据方法二
    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测试代码
 //添加数据方法二
    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("学号\t姓名\t年龄\t性别\t手机号\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("修改失败")
        }

完整代码

MysqlUtil代码

import java.sql.{Connection, DriverManager, PreparedStatement, ResultSet}
object MysqlUtil {
  implicit class MysqlOp(obj: MysqlDemo) {
    //初始化数据连接
    private var connection: Connection = _
    def conn(): Connection = {
      //注册driver
      Class.forName(obj.driver)
      //得到数据库连接
      val connection: Connection = DriverManager.getConnection(obj.url, obj.user, obj.password)
      connection
    }
    //释放资源
    def close(conn: Connection): Unit = {
      if (conn != null) {
        conn.close()
      }
    }
    //添加数据方法一
    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
    }
    //添加数据方法二
    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
    }
    //删除数据
    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
    }
    //修改数据
    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
    }
    //查询数据
    def selectStudent: Unit = {
      val selectSql = "select id,name, age, gender, telephone, email, classid from student"
      val rs: ResultSet = conn().createStatement().executeQuery(selectSql)
      println("学号\t姓名\t年龄\t性别\t手机号\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)
      }
    }
  }
}

MysqlDemo代码

import java.sql.Connection
class MysqlDemo {
  //  连接数据库 底层原理还是jdbc
  //驱动名称
  var driver = "com.mysql.cj.jdbc.Driver"
  //  访问MySQL服务器,通过3306端口访问mysql数据库
  var url = "jdbc:mysql://192.168.152.184:3306/exam"
  //用户名
  var user = "root"
  //密码
  var password = "123456"
  //辅助构造器    
  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 {
  //  实现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 = {
    //创建对象,调用apply方法
    val demo = MysqlDemo()
    //导入MySQLUtil包
    import MysqlUtil._
    //调用创建连接的方法
    val connection: Connection = demo.conn()
    // 调用释放资源方法
    demo.close(connection)
    //添加数据方法一
    val i: Int = demo.insertStudent
    if (i == 1) {
      println("添加成功")
    } else if (i == 0) {
      println("添加失败")
    }
    //添加数据方法二
    val i: Int = demo.insertStudent("aaa", 18, "男", "12345678910", "34649756@qq.com", 1)
    if (i == 1) {
      println("添加成功")
    } else if (i == 0) {
      println("添加失败")
    }
    //查询数据
    demo.selectStudent
    // 修改数据
    val i: Int = demo.updateStudent(22, "test", 25, "女", "123456789", "369852@qq.com", 2)
    if (i == 1) {
      println("修改成功")
    } else if (i == 0) {
      println("修改失败")
    }
    //删除数据
    val i: Int = demo.deleteStudent(21)
    if (i == 1) {
      println("删除成功")
    } else if (i == 0) {
      println("删除失败")
    }
  }
}

Das obige ist der detaillierte Inhalt vonWie verwende ich die Datenbank zum Hinzufügen, Löschen, Überprüfen und Ändern von Vorgängen in Java und Scala?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Dieser Artikel ist reproduziert unter:亿速云. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
Wie benutze ich Maven oder Gradle für das fortschrittliche Java -Projektmanagement, die Erstellung von Automatisierung und Abhängigkeitslösung?Wie benutze ich Maven oder Gradle für das fortschrittliche Java -Projektmanagement, die Erstellung von Automatisierung und Abhängigkeitslösung?Mar 17, 2025 pm 05:46 PM

In dem Artikel werden Maven und Gradle für Java -Projektmanagement, Aufbau von Automatisierung und Abhängigkeitslösung erörtert, die ihre Ansätze und Optimierungsstrategien vergleichen.

Wie erstelle und verwende ich benutzerdefinierte Java -Bibliotheken (JAR -Dateien) mit ordnungsgemäßem Versioning und Abhängigkeitsmanagement?Wie erstelle und verwende ich benutzerdefinierte Java -Bibliotheken (JAR -Dateien) mit ordnungsgemäßem Versioning und Abhängigkeitsmanagement?Mar 17, 2025 pm 05:45 PM

In dem Artikel werden benutzerdefinierte Java -Bibliotheken (JAR -Dateien) mit ordnungsgemäßem Versioning- und Abhängigkeitsmanagement erstellt und verwendet, wobei Tools wie Maven und Gradle verwendet werden.

Wie implementiere ich mehrstufige Caching in Java-Anwendungen mit Bibliotheken wie Koffein oder Guava-Cache?Wie implementiere ich mehrstufige Caching in Java-Anwendungen mit Bibliotheken wie Koffein oder Guava-Cache?Mar 17, 2025 pm 05:44 PM

In dem Artikel wird in der Implementierung von mehrstufigem Caching in Java mithilfe von Koffein- und Guava-Cache zur Verbesserung der Anwendungsleistung erläutert. Es deckt die Einrichtungs-, Integrations- und Leistungsvorteile sowie die Bestrafung des Konfigurations- und Räumungsrichtlinienmanagements ab

Wie kann ich JPA (Java Persistence-API) für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden verwenden?Wie kann ich JPA (Java Persistence-API) für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden verwenden?Mar 17, 2025 pm 05:43 PM

In dem Artikel werden mit JPA für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden erläutert. Es deckt Setup, Entity -Mapping und Best Practices zur Optimierung der Leistung ab und hebt potenzielle Fallstricke hervor. [159 Charaktere]

Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle?Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle?Mar 17, 2025 pm 05:35 PM

Mit der Klassenbelastung von Java wird das Laden, Verknüpfen und Initialisieren von Klassen mithilfe eines hierarchischen Systems mit Bootstrap-, Erweiterungs- und Anwendungsklassenloadern umfasst. Das übergeordnete Delegationsmodell stellt sicher

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
4 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Herunterladen der Mac-Version des Atom-Editors

Herunterladen der Mac-Version des Atom-Editors

Der beliebteste Open-Source-Editor

SublimeText3 Linux neue Version

SublimeText3 Linux neue Version

SublimeText3 Linux neueste Version

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

mPDF

mPDF

mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),

SAP NetWeaver Server-Adapter für Eclipse

SAP NetWeaver Server-Adapter für Eclipse

Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.