Scala 数据库连接 查询 插入

package inClass
import inClass.MysqlUtil._

object Demon02MySql {
//定义apply()方法 可以不用再new
    def apply()= new Demon02MySql
    def apply(driver: String, url: String, user: String, pwd: String): Demon02MySql =new Demon02MySql()


def main(args: Array[String]): Unit = {
   val demo = Demon02MySql()
	demo.conn()
	//demo.insert(5, "wahaha", 21)
	demo.select()
	
}
---------------------------------------------------------
package inClass
import java.sql.{Connection, DriverManager}

//伴生类
class MysqlUtil{
}

object MysqlUtil {

/*
*在inset 和 select 方法 中直接用conn()                                           
* 不要用conn() 返回的值 Connection 在implicit 类中 会报空                                            
*指针异常,通过debug能看到connection is null
*/
 

      implicit  class Mysql(obj:Demon02MySql){

        private var driver="com.mysql.jdbc.Driver"
        private var url="jdbc:mysql://192.168.107.100:3306"
        private var user="root"
        private var password="ok"

//        def this(driver:String,url:String,user:String,pwd:String){
//          this()
//          this.driver=driver
//          this.url=url
//          this.user=user
//          this.password=pwd
//
//        }

//初始化connection
        private var connection:Connection=_   
       										 

//连接
        def conn():Connection={
          Class.forName(driver)
          DriverManager.getConnection(url,user,password)
        }

// 插入
        def insert():Int={
          var inserSql="insert into testScala.student(id,name,age) values(1,'zhangsan',18)"
          val i =  conn().createStatement().executeUpdate(inserSql)   //写connection 报错是 null
          i
        }
  //传值插入      
        def insert(id:Int,name:String,age:Int):Int={
          //    var inserSql="insert into testScala.student(id,name,age) values("+id+",'"+name+"',"+age+")"
          var inserSql="insert into testScala.student(id,name,age) values(?,?,?)"

          val prep=conn.prepareStatement(inserSql)
          prep.setInt(1,id)
          prep.setString(2,name)
          prep.setInt(3,age)

          val i = prep.executeUpdate()

          //    val i = connection.createStatement().executeUpdate(inserSql)
          i
        }
        
   //查询
        def select():Unit={
            var sqlString="select id,name,age from testScala.student"
            val re = conn().createStatement().executeQuery(sqlString)
            while (re.next()) {
              val id = re.getInt(1)
              val name = re.getString(2)
              val age = re.getInt(3)
                    printf("学号:%d 姓名:%s 年龄:%d \n",id,name,age)
            //      println(s"学号:$id 名字:$name 年龄:$age")
            //      println("学号:%d 姓名:%s 年龄:%d".format(id,name,age))
          }
        }



      }
}

插入 后 查询结果:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值