热门标签 | 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方法



推荐阅读
  • MySQL性能优化与调参指南【数据库管理】
    本文详细探讨了MySQL数据库的性能优化与参数调整技巧,旨在帮助数据库管理员和开发人员提升系统的运行效率。内容涵盖索引优化、查询优化、配置参数调整等方面,结合实际案例进行深入分析,提供实用的操作建议。此外,还介绍了常见的性能监控工具和方法,助力读者全面掌握MySQL性能优化的核心技能。 ... [详细]
  • 掌握PHP框架开发与应用的核心知识点:构建高效PHP框架所需的技术与能力综述
    掌握PHP框架开发与应用的核心知识点对于构建高效PHP框架至关重要。本文综述了开发PHP框架所需的关键技术和能力,包括但不限于对PHP语言的深入理解、设计模式的应用、数据库操作、安全性措施以及性能优化等方面。对于初学者而言,熟悉主流框架如Laravel、Symfony等的实际应用场景,有助于更好地理解和掌握自定义框架开发的精髓。 ... [详细]
  • JVM参数设置与命令行工具详解
    JVM参数配置与命令行工具的深入解析旨在优化系统性能,通过合理设置JVM参数,确保在高吞吐量的前提下,有效减少垃圾回收(GC)的频率,进而降低系统停顿时间,提升服务的稳定性和响应速度。此外,本文还将详细介绍常用的JVM命令行工具,帮助开发者更好地监控和调优JVM运行状态。 ... [详细]
  • 在 Linux 系统中,`/proc` 目录实现了一种特殊的文件系统,称为 proc 文件系统。与传统的文件系统不同,proc 文件系统主要用于提供内核和进程信息的动态视图,通过文件和目录的形式呈现。这些信息包括系统状态、进程细节以及各种内核参数,为系统管理员和开发者提供了强大的诊断和调试工具。此外,proc 文件系统还支持实时读取和修改某些内核参数,增强了系统的灵活性和可配置性。 ... [详细]
  • 题目描述非常吸引人。每颗星星可以通过其在窗口的左下角和右上角位置构建两条扫描线,从而将问题转化为区间增减和求最大值的操作。需要注意的是,位于边界的星星不应计入结果,因此在处理时应分别对左右边界进行适当的增减调整。此外,利用线段树和离散化技术可以显著提高算法效率,确保在大规模数据下的性能表现。 ... [详细]
  • 在《PHP应用性能优化实战指南:从理论到实践的全面解析》一文中,作者分享了一次实际的PHP应用优化经验。文章回顾了先前进行的一次优化项目,指出即使系统运行时间较长后出现的各种问题和性能瓶颈,通过采用一些通用的优化策略仍然能够有效解决。文中不仅详细阐述了优化的具体步骤和方法,还结合实例分析了优化前后的性能对比,为读者提供了宝贵的参考和借鉴。 ... [详细]
  • Vuex 实战进阶:构建高效笔记本应用(第二篇)
    在上一篇文章中,我们初步探讨了 Vuex 在该项目中的应用。本文将深入解析整个项目的架构设计。首先回顾 `main.js` 的内容,然后重点分析 `App.vue` 文件,其中引入了 `Toolbar.vue` 和 `NodeList.vue` 组件,详细说明它们在应用中的作用和交互方式。通过这些组件的协同工作,我们将展示如何构建一个高效且响应迅速的笔记本应用。 ... [详细]
  • 本文详细解析了如何使用 jQuery 实现一个在浏览器地址栏运行的射击游戏。通过源代码分析,展示了关键的 JavaScript 技术和实现方法,并提供了在线演示链接供读者参考。此外,还介绍了如何在 Visual Studio Code 中进行开发和调试,为开发者提供了实用的技巧和建议。 ... [详细]
  • 新年伊始,正是学习的最佳时机。本文全面解析了CK1957-Zookeeper的核心概念与实践技巧,旨在帮助初学者快速掌握这一深度学习工具。通过详细的理论讲解和实际操作示例,读者可以更好地理解Zookeeper的工作原理及其在分布式系统中的应用。无论是新手还是有一定基础的学习者,都能从中受益匪浅。 ... [详细]
  • 作为140字符的开创者,Twitter看似简单却异常复杂。其简洁之处在于仅用140个字符就能实现信息的高效传播,甚至在多次全球性事件中超越传统媒体的速度。然而,为了支持2亿用户的高效使用,其背后的技术架构和系统设计则极为复杂,涉及高并发处理、数据存储和实时传输等多个技术挑战。 ... [详细]
  • 探究Oracle数据库字符集编码的详细方法与实践
    本文深入探讨了Oracle数据库字符集编码的详细方法与实践。首先,通过执行 `SELECT USERENV('language') FROM DUAL;` 查询服务端字符集编码。其次,通过在注册表中搜索 `NLS_LANG` 参数来查看客户端字符集编码。此外,文章还介绍了如何在不同场景下正确配置和转换字符集,以确保数据的一致性和完整性。 ... [详细]
  • 深入解析 iOS Objective-C 中的对象内存对齐规则及其优化策略
    深入解析 iOS Objective-C 中的对象内存对齐规则及其优化策略 ... [详细]
  • 根据 Laravel 官方文档,视图文件在首次加载时会被编译成普通的 PHP 代码并存储在缓存中。当视图文件发生更改时,系统会自动检测到这些变化并重新编译和缓存新的版本,以确保用户始终看到最新的内容。这一机制显著提高了应用的性能和响应速度。 ... [详细]
  • 在iOS平台上,应用的流畅操作体验一直备受赞誉。然而,过去开发者往往将更多精力集中在功能实现上,而对性能优化的关注相对较少。本文深入探讨了iOS应用性能优化的关键要点与实践方法,旨在帮助开发者提升应用的响应速度、降低功耗,并改善整体用户体验。通过具体案例分析和技术解析,文章提供了实用的优化策略,包括代码层面的改进、资源管理优化以及界面渲染效率的提升等。 ... [详细]
  • 在 `channelartlist` 标签中新增了 `limit` 属性支持,进一步提升了内容展示的灵活性。具体修改包括:将 `\include\taglib\channelartlist.lib.php` 文件中的 `$attlist` 从 `typeid|0,row|20,cacheid|` 调整为 `typeid|0,limit|20,cacheid|`,从而允许开发者更精细地控制内容的数量和显示方式。这一改进不仅增强了标签的功能性,还提高了开发效率和用户体验。 ... [详细]
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社区 版权所有