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



推荐阅读
  • 本文介绍如何使用Python进行文本处理,包括分词和生成词云图。通过整合多个文本文件、去除停用词并生成词云图,展示文本数据的可视化分析方法。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 2023 ARM嵌入式系统全国技术巡讲旨在分享ARM公司在半导体知识产权(IP)领域的最新进展。作为全球领先的IP提供商,ARM在嵌入式处理器市场占据主导地位,其产品广泛应用于90%以上的嵌入式设备中。此次巡讲将邀请来自ARM、飞思卡尔以及华清远见教育集团的行业专家,共同探讨当前嵌入式系统的前沿技术和应用。 ... [详细]
  • 国内BI工具迎战国际巨头Tableau,稳步崛起
    尽管商业智能(BI)工具在中国的普及程度尚不及国际市场,但近年来,随着本土企业的持续创新和市场推广,国内主流BI工具正逐渐崭露头角。面对国际品牌如Tableau的强大竞争,国内BI工具通过不断优化产品和技术,赢得了越来越多用户的认可。 ... [详细]
  • 深入理解 Oracle 存储函数:计算员工年收入
    本文介绍如何使用 Oracle 存储函数查询特定员工的年收入。我们将详细解释存储函数的创建过程,并提供完整的代码示例。 ... [详细]
  • 本文总结了2018年的关键成就,包括职业变动、购车、考取驾照等重要事件,并分享了读书、工作、家庭和朋友方面的感悟。同时,展望2019年,制定了健康、软实力提升和技术学习的具体目标。 ... [详细]
  • 在计算机技术的学习道路上,51CTO学院以其专业性和专注度给我留下了深刻印象。从2012年接触计算机到2014年开始系统学习网络技术和安全领域,51CTO学院始终是我信赖的学习平台。 ... [详细]
  • CSS 布局:液态三栏混合宽度布局
    本文介绍了如何使用 CSS 实现液态的三栏布局,其中各栏具有不同的宽度设置。通过调整容器和内容区域的属性,可以实现灵活且响应式的网页设计。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
  • PHP 5.5.0rc1 发布:深入解析 Zend OPcache
    2013年5月9日,PHP官方发布了PHP 5.5.0rc1和PHP 5.4.15正式版,这两个版本均支持64位环境。本文将详细介绍Zend OPcache的功能及其在Windows环境下的配置与测试。 ... [详细]
  • 本文作者分享了在阿里巴巴获得实习offer的经历,包括五轮面试的详细内容和经验总结。其中四轮为技术面试,一轮为HR面试,涵盖了大量的Java技术和项目实践经验。 ... [详细]
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社区 版权所有