1. 程式人生 > >scala語言入門(五)操作外部資料 及 專案實戰

scala語言入門(五)操作外部資料 及 專案實戰

一、scala 操作本地檔案,網路url

import scala.io.Source

object FileApp {

  def main(args: Array[String]): Unit = {

    val file = Source.fromFile("D:/HostKeyDB.txt")(scala.io.Codec.UTF8)

    def readLine(): Unit = {
      for (line <- file.getLines()) {
        println(line)
      }
    }

     //   readLine()

    def readChar(): Unit = {
      for (ele <- file) {
        print(ele + " ")
      }
    }

       readChar()

    def readNet(): Unit = {
      val file = Source.fromURL("http://www.baidu.com")
      for (line <- file.getLines()) {
        println(line)
      }
    }

    readNet()
  }

}

 

 

 

二、scala 操作mysql 資料庫

import java.sql
import java.sql.DriverManager


/**
  * @author DuanZhaoXu
  * @ClassName:
  * @Description:
  * @date 2018年12月20日 11:03:00
  */
object MysqlApp {

  def main(args: Array[String]): Unit = {

    //    val driver="com.mysql.jdbc.Driver"
    val url="jdbc:mysql://192.168.42.199:3306/agri_devframe"
    val username="root"
    val password="123456"

    var connection:sql.Connection=null
    try{

      // make the connection
      classOf[com.mysql.jdbc.Driver]
      connection=DriverManager.getConnection(url,username,password)

      val statement=connection.createStatement()
      val sql="select * from DEV_USER"
      val resultSet=statement.executeQuery(sql)

      while (resultSet.next) {
        val title=resultSet.getString("NAME")
        val date=resultSet.getString("EMAIL")
        val password = resultSet.getString("PASSWORD")

        println(s"$title, $date")
      }

    }catch {
      case e:Exception=>e.printStackTrace()
    }finally {
      if(connection!=null) {
        connection.close()
      }
    }

  }

}

 

 

三、scala 操作 xml 檔案

import java.io.{FileInputStream, InputStreamReader}
import scala.xml.XML



/**
  * @author DuanZhaoXu
  * @ClassName:
  * @Description:
  * @date 2018年12月20日 11:09:58
  */
object XMLApp {

  def main(args: Array[String]): Unit = {

    //loadXML()

    println("=======================")

    readXMLAttr()
  }

  def readXMLAttr(): Unit = {
    val xml = XML.load(this.getClass.getClassLoader.getResource("test.xml"))

    // 找symbol下的units
    val unit = xml \ "symbol" \ "units"

    println(unit)

    println("----------------------")

    // 找所有的units
    val fields = xml \\ "units"
    for (field <- fields) {
      println(field)
    }

    println("----------------------")

    // 找tiker屬性
    // 方式一
    //    val fieldAttrs = (xml \ "symbol").map(_ \ "@ticker")
    // 方式二
    val fieldAttrs = (xml \ "symbol" \\ "@ticker")
    for (fieldAttr <- fieldAttrs) {
      println(fieldAttr)
    }

    println("----------------------")

    // 過濾出指定ticker的symbol
    // 方式一
    //    val filters = (xml \\ "symbol").filter(_.attribute("ticker").exists(_.text.equals("apple")))
    // 方式二
    val filters = (xml \\ "symbol").filter(x => ((x \ "@ticker").text).equals("apple"))
    for (filter <- filters) {
      println(filter)
    }

    println("----------------------")

    (xml \ "symbol" \ "units").map(x=>(x.text )).foreach(println)
  }

  def loadXML(): Unit = {

     //方式一
//        val xml = XML.load(this.getClass.getClassLoader.getResource("test.xml"))
//        println(xml)

    // 方式二
//        val xml = XML.load(new FileInputStream(
//          "D:/test.xml"))
//        println(xml)

    // 方式三
    val xml = XML.load(new InputStreamReader(new FileInputStream(
      "D:/test.xml")))

    println(xml)
  }


}

四、scala 和 java 混編程式碼實現 資料庫,表增刪改查demo

碼雲地址 :https://gitee.com/dzxmy/scala-boot-java