JDBC *** 作

JDBC *** 作,第1张

import java.io.{BufferedReader, FileReader}
import java.sql.{Connection, DriverManager, PreparedStatement, ResultSet}
import scala.io.{BufferedSource, Source}

object Demo02ScalaBase {
  def main(args: Array[String]): Unit = {
    //注释
    //单行注释
    /**
     * 多行注释 用于 文档说明
     */

    //变量的定义
    /**
     * val 修饰的变量是不可以重新赋值的
     * var 修饰的变量可以重新赋值
     * 变量的类型可以由编译器自行推断,也可以手动指定
     */
    val i = 10
    var j = 20
    println(i, j)
    println(i)
    println(j)
    //重新赋值
    //    i = 20 //i由于是var修饰的 所以不能修改
    j = 10
    println(j)

    //Scala中的数据类型
    println(i.isInstanceOf[Int])

    val b: Byte = 1
    val s: Short = 1
    val i1: Int = 1
    val l: Long = 1
    val f: Float = 1
    val d: Double = 1
    val c: Char = 'a'
    val bool1: Boolean = true
    val bool2: Boolean = false
    println(b, s, i1, l, f, d, c, bool1, bool2)

    /**
     * Any类型有两个子类分别是:AnyRef,anyVal
     * AnyVal是所有值类型的父类
     * AnyRef是所有引用类型的父类
     */

    /**
     * Scala中的字符串实际上是基于Java的String
     */
    val str1: String = "Hello World"
    //AnyRef类似Java中的Object
    val anyRef: AnyRef = str1

    /**
     * Scala中的打印方法同Java方法一致
     */
    System.out.println(anyRef)
    println(anyRef)

    //字符串常用的方法
    /**
     * 因为Scala的String基于Java中的String,所以Java中跟String有关的方法都可以在Scala中使用
     */
    val strArr: Array[String] = str1.split(" ")
    println(strArr.mkString)
    //Scala中的String类型还有一些方法是在Scala当中特有的
    /**
     * 隐式转换:动态的给对象增加方法
     */
    str1.foreach(println)

    //类型转换
    //Java版本
    val int1: Int = 100
    //Int2Str
    val Int2Str: String = String.valueOf(int1)
    println(Int2Str)
    val s2: String = "200"
    val String2Int: Integer = Integer.valueOf(s2)
    print(String2Int)

    //Scala版本
    /**
     * 底层都是基于Java的方法
     * 在这之上能够简化调用
     */
    val s3: String = "123"
    println(s3.toByte)
    println(s3.toShort)
    println(s3.toInt)
    println(s3.toLong)
    println(s3.toFloat)
    println(s3.toDouble)
    println("true".toBoolean)
    println(10.toString)

    //拼接字符串
    val hello: String = "Hello"
    val space: String = " "
    val world: String = "World"
    val concatStr1: String = hello + space + world
    println(concatStr1)
    val builder = new StringBuilder()
    builder.append(hello)
    builder.append(space)
    builder.append(world)
    println(builder)

    //Scala中的拼接
    val concatStr2: String = s"$hello$space$world"
    println(concatStr2)

    //在使用Scala的拼接方式时需要注意变量的名称
    //如果是以下划线开头的变量名需要加上{}
    val _str4: String = "!"
    println(s"$hello$space$world${_str4}")

    val sqlStr1: String = "select * from (" +
      "select * " +
      "from tb1 " +
      "left join tb2 " +
      "on tb1.id=tb2.id" +
      ")t1"
    val sqlStr2: String =
      """
        |select *
        |from (
        |select *
        |from tb1
        |left join tb2
        |on tb1.id=tb2.id
        |)t1
        |""".stripMargin
    println(sqlStr1)
    println(sqlStr2)

    println(9 * 9) //81 这里的*号是普通运算符
    println("#" * 50) //50个#号

    //算术运算
    println(10 + 1)
    println(10 - 1)
    println(10 * 4)
    println(10 / 2)
    println(10 % 3)
    //逻辑运算 & | !
    val b1: Boolean = true
    val b2: Boolean = false
    println(b1 & b2)
    println(b1 | b2)
    println(!b1)

    //选择结构
    val age: Int = 20
    if (age < 0 | age > 200) {
      println("不是正常人")
    } else if (age >= 18) {
      println("成年")
    } else {
      println("未成年")
    }

    //循环结构
    //计算1~100的累加和
    var cnt: Int = 1
    var sum: Int = 0
    //while do 只有当条件成立 才会执行循环体
    while (cnt <= 100) {
      sum = sum + cnt
      cnt += 1
    }
    println(sum)

    cnt = 1
    sum = 0
    //do while 不管条件成不成立 都会执行循环体
    do {
      sum += cnt
      cnt += 1
    } while (cnt <= 100)
    println(sum)

    //for 循环 同Python非常类似 主要用于遍历collection
    //类似Java中的for each
    val line:String="1,2,3,4,5,6,7"
    val words: Array[String] = line.split(",")
    for (word <- words) {
      println(word)
    }

    //读写文件
    //Java版
    val br: BufferedReader = new BufferedReader(new FileReader("Scala/data/students.txt"))
    var sLine: String = br.readLine()
    while (sLine != null) {
      println(sLine)
      sLine = br.readLine()
    }
    br.close()

    //Scala版
    val bs: BufferedSource = Source
      .fromFile("Scala/data/students.txt")
    val strings: Iterator[String] = bs.getLines()
    for (elem <- strings) {
      println(elem)
    }
    bs.close()

    //简化版
    //链式调用
    val bs2: BufferedSource = Source
      .fromFile("Scala/data/students.txt")
    bs2.getLines()
      .foreach(println)

    //Scala中没有特殊的写文件的方式
    //PrintWriter
    //FileWriter

    //怎么在Scala代码中读取MySQl中的数据

    //1.建立连接
    val conn: Connection = DriverManager.getConnection("jdbc:mysql://master:3306/student?useSSL=false", "root", "123456")

    //2.创建一个Statement
    val pSt: PreparedStatement = conn.prepareStatement("select id,name,age,gender,clazz from student where clazz like ?")

    //3.设置参数
    pSt.setString(1,"文科%")

    //4.执行SQL 并获取结果
    val rs: ResultSet = pSt.executeQuery()
    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 clazz:String= rs.getString("clazz")

      println(s"$id,$name,$age,$gender,$clazz")
    }

    //5.关闭连接
    rs.close()
    pSt.close()
    conn.close()
  }
}

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/800148.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-06
下一篇2022-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存