如何在Scala

时间:2018-04-26 06:42:15

标签: scala

这是我的代码片段

package SimpleDruidOperation
import java.sql.{Connection, Driver, DriverManager, SQLException, Statement}
class ConnectionEstablishment {
  var conn:Connection=_
  var dr:Driver=_
  def connEstablishment() =
  {
    try {
      dr = new com.mysql.jdbc.Driver()
      DriverManager.registerDriver(dr)
      conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/deven","root","root")
      if(conn!=null)
        println("!!Database Connected Succesfully!!!")
      else
        println("!!Check your Database Connection !!")
    }
    catch
      {
        case e:SQLException=>println("Exception is "+e.getMessage)
      }
    finally
      {
        conn.close()
      }
  }
}
class InsertintoDatabase extends ConnectionEstablishment {
  var stmt:Statement=_
  // override def connEstablishment():co = super.connEstablishment()
  val conn:Connection=connEstablishment()//it is not going to override
  def insertintoDatabase(): Unit =
  {
    println("Checking Conection Establishment")
    try {
      stmt = conn1.createStatement()
      var sql = "insert into emp (eid,ename,eadd,emob) values (101,'Mohit','Pune',9156369938) "
      var i = stmt.executeUpdate(sql)
      if (i > 0)
        println(i + "Value Inserted Successfully into Databaes")
      else
        println("!!Not Inserted Check something is going wrong!!")
    }
    catch
      {
        case e:SQLException=>println("Exception is "+e.getMessage)
      }
    finally
    {
      println("Closing Connection Establishment "+conn1.close())
      println("CLosing Statement Connection  "+conn1.close())
    }
  }
}

如何在Scala中的变量中存储覆盖方法

这里我的第一个班级ConnectionEstablishment这个类是连接而第二个类是插入数据库但问题是我无法覆盖connEstablisment方法,因为如果我想覆盖它然后我无法建立插入连接 因为我需要它,所以我可以调用语句stmt=conn,createStatement()

我该怎么做?

1 个答案:

答案 0 :(得分:0)

这里的问题是,当您实际需要两个单独的类时,您已经创建了一个类层次结构。 AddType application/x-httpd-php56 php56 php php_flag log_errors on php_flag display_errors on #php_value error_reporting 8 php_value error_reporting E_ALL php_value error_log /home/shadyabc/public_html/error_log2 <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_HOST} ^shadyab.com$ [NC] RewriteRule ^(.*)$ http://www.shadyab.com/$1 [R=301,L] RewriteCond $1 !^(index\.php|resources|robots\.txt) RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L,QSA] RewriteCond %{REQUEST_METHOD} OPTIONS RewriteRule ^(.*)$ $1 [R=200,L] </IfModule> order allow,deny allow from all RewriteCond %{HTTP_HOST} ^shadyab\.ir$ [OR] RewriteCond %{HTTP_HOST} ^www\.shadyab\.ir$ RewriteRule ^/?$ "http\:\/\/www\.shadyab\.com" [R=301,L] <Files 403.shtml> order allow,deny allow from all </Files> deny from 72.52.124.58 类表示数据库连接,ConnectionEstablishment类表示该数据库上的操作,它们之间没有自然的层次结构。

类层次结构应该具有&#34;是&#34;关系:如果InsertintoDatabase继承自D,那么说C D是有意义的。因此,CCircle继承是有道理的,因为圆形状。由于数据库操作不是数据库连接,因此从数据库连接继承数据库操作没有意义。

数据库操作需要数据库连接,这是一个包含关系,而不是层次结构。

因此,您应该拥有一个创建和管理数据库连接的Shape类,以及一个ConnectionEstablishment类,该类采用InsertintoDatabase实例并使用它将项目插入数据库。

通过这种安排,您可以创建以不同方式连接到数据库的ConnectionEstablishment的不同子类,ConnectionEstablishment类将与任何这些子类一起使用。同样,您可以创建使用数据库连接的新类,例如InsertintoDatabase,而无需继承现有的DeleteFromDatabase类。