热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

深入解析ownCloud源代码:数据库操作详解(增删改查)

本文深入解析了ownCloud源代码中的数据库操作,重点介绍了增删改查方法的具体实现。通过分析`E:\wamp\www\owncloud\lib\private\files\cache\cache.php`文件,详细阐述了如何在ownCloud系统中执行数据的插入、删除、更新和查询操作。这些方法不仅涵盖了基本的数据操作,还涉及了缓存管理等高级功能,为开发者提供了全面的技术参考。

数据库增删改查方法

把到目前位置整理的一起放在这里

以下都是在这个中进行的操作:E:\wamp\www\owncloud\lib\private\files\cache\cache.php

1、增加

put方法中的如下图位置插入数据


就是以上的复制到本地并删除文件(红线部分)修改之后可用,但是会存储到files_trash表中,文件没有,files_cache也没有。已删除文件处也不会显示。

3、更改

(1)以更新文件名字为例

E:\wamp\www\owncloud\apps\files\lib\app.php中的rename方法

  ↓↓↓

E:\wamp\www\owncloud\lib\private\files\view.php这里的rename方法来重命名文件

  ↓↓↓

E:\wamp\www\owncloud\apps\files_trashbin\lib\storage.php中的rename调用

E:\wamp\www\owncloud\apps\files_external\lib\streamwrapper.php的rename方法重命名ftp的文件

  ↓↓↓

E:\wamp\www\owncloud\lib\private\files\cache\updater.php中的rename方法重命名数据库中数据

  ↓↓↓

E:\wamp\www\owncloud\lib\private\files\cache\cache.php中的move方法中的


这条sql执行更新命令,over!!!!!!!!!

 

更新完还会change一大堆信息,fuck!

 

rename完了回到view的rename方法,从第二道红线继续运行

最后返回数据到

E:\wamp\www\owncloud\apps\files\lib\app.php中的rename方法

  ↓↓↓

这下真over了算是!!!!

(2)修改更新txt文件

E:\wamp\www\owncloud\apps\files_texteditor\ajax\savefile.php中的


上面红线中的方法,修改内容。

4、查询

查询列表list.php为例

E:\wamp\www\owncloud\lib\private\files\cache\cache.php的getFolderContentsById($fileId)方法从数据库选取数据

以上,over


数据库连接处

E:\wamp\www\owncloud\lib\private\db.php的prepare方法


E:\wamp\www\owncloud\lib\private\server.php中的getDatabaseConnection方法

判断是否是写操作但是没卵用啊,和数据库分离又没关系

E:\wamp\www\owncloud\3rdparty\doctrine\dbal\lib\Doctrine\DBAL\Connection.php的prepare方法

  ↓↓↓

E:\wamp\www\owncloud\3rdparty\doctrine\dbal\lib\Doctrine\DBAL\Connection.php的connection方法

 ↓↓↓

还有个E:\wamp\www\owncloud\3rdparty\doctrine\dbal\lib\Doctrine\DBAL\Driver\PDOConnection.php类

 

另起,以下准备修改主从,只是一个想法,没实现:


以上可见,通过register方法将对象注册到server对象中

根据以上修改如下:

 

E:\wamp\www\owncloud\lib\private\db\connectionfactory.php中加入了一个

/**
 *
设置从数据库服务器
 * @param \OC\SystemConfig $config
 * @return array
 */
public function createFConnectionParams($config) {

方法用来生成从服务器的链接

在server.php的注册方法中加入了如下方法:

$this->registerService('FDatabaseConnection', function (Server $c) {
  
$factory = new \OC\DB\ConnectionFactory();
  
$systemConfig = $c->getSystemConfig();
  
$type = $systemConfig->getValue('dbtype', 'sqlite');
   if
(!$factory->isValidType($type)) {
     
throw new \OC\DatabaseException('Invalid database type');
  
}
  
$connectionParams = $factory->createFConnectionParams($systemConfig);
  
$connection = $factory->getConnection($type, $connectionParams);
  
$connection->getConfiguration()->setSQLLogger($c->getQueryLogger());
   return
$connection;
});

注册了一个从服务器链接

继续加入了

/**
 *
返回从服务器的链接session
 * @return \OCP\IDBConnection
 */
function getFDatabaseConnection() {
  
return $this->query('FDatabaseConnection');
}

获取链接方法

以及注册Fdb方法



推荐阅读
  • 我的读书清单(持续更新)201705311.《一千零一夜》2006(四五年级)2.《中华上下五千年》2008(初一)3.《鲁滨孙漂流记》2008(初二)4.《钢铁是怎样炼成的》20 ... [详细]
  • 本文详细探讨了在Web开发中常见的UTF-8编码问题及其解决方案,包括HTML页面、PHP脚本、MySQL数据库以及JavaScript和Flash应用中的乱码问题。 ... [详细]
  • 本文详细记录了腾讯ABS云平台的一次前端开发岗位面试经历,包括面试过程中遇到的JavaScript相关问题、Vue.js等框架的深入探讨以及算法挑战等内容。 ... [详细]
  • 本文探讨了程序员这一职业的本质,认为他们是专注于问题解决的专业人士。文章深入分析了他们的日常工作状态、个人品质以及面对挑战时的态度,强调了编程不仅是一项技术活动,更是个人成长和精神修炼的过程。 ... [详细]
  • 在1995年,Simon Plouffe 发现了一种特殊的求和方法来表示某些常数。两年后,Bailey 和 Borwein 在他们的论文中发表了这一发现,这种方法被命名为 Bailey-Borwein-Plouffe (BBP) 公式。该问题要求计算圆周率 π 的第 n 个十六进制数字。 ... [详细]
  • 二维码的实现与应用
    本文介绍了二维码的基本概念、分类及其优缺点,并详细描述了如何使用Java编程语言结合第三方库(如ZXing和qrcode.jar)来实现二维码的生成与解析。 ... [详细]
  • 在日常生活中,支付宝已成为不可或缺的支付工具之一。本文将详细介绍如何通过支付宝实现免费提现,帮助用户更好地管理个人财务,避免不必要的手续费支出。 ... [详细]
  • 本文介绍了如何通过C#语言调用动态链接库(DLL)中的函数来实现IC卡的基本操作,包括初始化设备、设置密码模式、获取设备状态等,并详细展示了将TextBox中的数据写入IC卡的具体实现方法。 ... [详细]
  • 本文详细介绍了C++中的构造函数,包括其定义、特点以及如何通过构造函数进行对象的初始化。此外,还探讨了转换构造函数的概念及其在不同情境下的应用,以及如何避免不必要的隐式类型转换。 ... [详细]
  • 数据类型--char一、char1.1char占用2个字节char取值范围:【0~65535】char采用unicode编码方式char类型的字面量用单引号括起来char可以存储一 ... [详细]
  • 本文详细介绍了iOS应用的生命周期,包括各个状态及其转换过程中的关键方法调用。 ... [详细]
  • 项目风险管理策略与实践
    本文探讨了项目风险管理的关键环节,包括风险管理规划、风险识别、风险分析(定性和定量)、风险应对策略规划及风险控制。旨在通过系统的方法提升项目成功率,减少不确定因素对项目的影响。 ... [详细]
  • 本文详细介绍了在尝试启动MySQL服务时,如果遇到错误提示‘MySQL未运行,但锁定文件(/var/lock/subsys/mysql)存在’应如何处理,包括具体的操作步骤和可能的原因分析。 ... [详细]
  • 本文详细介绍了HTTP协议中的缓存机制,包括ETag的使用方法和304状态码的意义,探讨了强缓存与协商缓存的区别及其工作原理,旨在帮助开发者更好地理解和优化网站性能。 ... [详细]
  • GLiHT数据介绍
    GLiHT数据介绍 ... [详细]
author-avatar
建哥2502897913
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有