61阅读

idea进入方法实现类-Yii框架批量插入数据扩展类的简单实现方法

发布时间:2017-12-24 所属栏目:键盘无法输入

一 : Yii框架批量插入数据扩展类的简单实现方法

本文实例讲述了Yii框架批量插入数据扩展类的简单实现方法。分享给大家供大家参考,具体如下:

MySQL INSERT语句允许插入多行数据,如下所示:

 INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9); 

那么要实现批量插入,主要的任务就是按照列顺序,把数据组装成上述格式即可,可以使用sprintf和vsprintf函数来实现。

下面是一个实现批量插入的Yii扩展类的简单示例(支持VARCHAR类型数据):

 <?php /**  * class for sql batch insert  */ class CDbBICommand extends CDbCommand{  /** @var CActiveRecord $class */  private $class;  /** @var string $insert_tpl */  private $insert_tpl = "insert into %s(%s) ";  /** @var string $value_tpl */  private $value_tpl = "(%s)";  /** @var string $query */  public $query;  /** @var CDbColumnSchema[] $columns */  private $columns;  /** @var boolean $fresh */  private $fresh;  /** @param CActiveRecord $class  * @param CDbConnection $db  */  public function __construct($class,$db){  $this->class = $class;  $this->createtpl();  parent::_construct($db);  }  private function createtpl(){  $this->fresh = true;  $value_tpl = "";  $columns_string = "";  $this->columns = $this->class->getMetaData()->tableSchema->columns;  $counter = 0;  foreach($this->columns as $column){  /** @var CDbColumnSchema $column */  if($column->autoIncrement){  $value_tpl .= "0";  }else{  $value_tpl .= ""%s"";  }  $columns_string .= $column->name;  $counter ++;  if($counter != sizeof($this->columns)){  $columns_string .= ", ";  $value_tpl .= ", ";  }  }  $this->insert_tpl = sprintf($this->insert_tpl, $this->class->tableName(), $columns_string);  $this->value_tpl = sprintf($this->value_tpl, $value_tpl);  }  /**  * @param CActiveRecord $record  */  public function add($record){  $values = array();  $i = 0;  foreach($this->columns as $column){  if($column->autoIncrement){  continue;  }  $values[$i] = $this->class->{$column->name};  $i ++;  }  if(!$this->fresh){  $this->query .= ",";  }else{  $this->query = "values";  }  $this->fresh = false;  $this->query .= vsprintf($this->value_tpl, $values);  return true;  }  public function execute(){  $this->setText($this->insert_tpl." ".$this->query);  return parent::execute();  } } 

使用方法是通过add方法逐个加入数据,然后调用execute执行。

更多关于Yii相关内容感兴趣的读者可查看本站专题:《Yii框架入门及常用技巧总结》、《php优秀开发框架总结》、《smarty模板入门基础教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

二 : 编程实现对键盘输入的英文名句子进行加密。用加密方法为,当内容为英文

//编程实现对键盘输入的英文名句子进行加密。[www.61k.com)用加密方法为,当内容为英文字母时其在26字母中的其后三个字母代替该字母,若为其它字符时不变。 // // Created by han jun on 13-2-15. // Copyright (c) 2013年 han jun. All rights reserved. // #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) {  @autoreleasepool {  char c;  printf("请输入一个字符串:\n");  while((c=getchar())!='\n')  {  if((c>='A'&&c<='W')||(c>='a'&&c<='w'))  {  c=c+3;  }  else if((c>='X'&&c<='Z')||(c>='x'&&c<='z'))  {  c=(c+3)-26;  }  printf("%c",c);  }  printf("\n");  }  return 0; }

三 : action类实现

Struts 2 Action类可以实现一个Action接口,也可实现其他接口,使可选和定制的服务成为可能。[www.61k.com)Struts2提供一个ActionSupport基类去实现 常用的接口。Action接口不是必须的,任何有execute标识的POJO对象都可以用作Struts2的Action对象
ps: pojo , 简单的Java对象(Plain Ordinary Java Objects)实际就是普通JavaBeans,使用POJO名称是为了避免和 EJB混淆起来, 而且简称比较直接.

Action类没有直接与request,response打交道,已经与Servlet API完全分离,可通过方法名形参看出来,但我们在实现业务逻辑处理时经常需要访问Servlet中的对象,如Session、Application等。Struts2.0 提供了一个名字为ActionContext的类,在Action中可以通过该类获得Servlet API。

ActionContext是一个Action的上下文对象,Action运行期间所用到的数据都保存在ActionContext中(如Session,客户端提交的参数等信息)。在每次执行Action之前都会创建新的ActionContext,ActionContext是线程安全的,也就是说在同一个线程里ActionContext里的属性是唯一的,这样我的Action就可以在多线程中使用。

在Action中可以通过下面的代码来创建和使用ActionContext类,关于该类的方法介绍如下所示:
ActionContext ac= www.61k.com ();

以下是ActionContext类的常用方法
1.Object get(Object key) :通过参数key来查找当前ActionContext中的值
2.Map getApplication() :返回一个Application级的Map对象
3.Static ActionContext getContext() :获得当前线程的ActionContext对象
4.Map getParameters() :返回一个包含所有HttpServletRequest参数信息的Map对象

5.Map getSession() :返回一个Map类型的HttpSession对象

我们取得的session却是Map类型的对象,这是为什么?框架将与Web相关的很多对象重新进行了包装,比如这里就将 HttpSession对象重新包装成了一个Map对象,供我们的Action使用,而不用直接和底层的HttpSession打交道。也正是框架的包装,让我们的Actoion可以完全的和Web层解藕。

6.Void put(Object key,Object value) :向当前ActionContext对象中存入名值对信息
7.Void setApplication(Map application) :设置Application上下文
8.Void setSession(Map session) :设置一个Map类型的Session值

如果我们的Action需要直接与JavaServlet的HttpSession、HttpServletRequest等一些对象进行操作,我们又该如何处理?请看下面的ServletActionContext。

ServletActionContext
这个类直接继承了我们上面介绍的ActionContext,它提供了直接与JavaServlet相关对象访问的功能

1、取得HttpServletRequest对象:

HttpServletRequest request = ServletActionContext. getRequest();

2、取得HttpSession对象:
HttpSession session = ServletActionContext. getRequest().getSession();

ServletActionContext和ActionContext有着一些重复的功能,在我们的Action中,该如何去抉择呢?我们遵循的原则是:如果ActionContext能够实现我们的功能,那最好就不要使用ServletActionContext,让我们的Action尽量不要直接去访问JavaServlet的相关对象。在使用ActionContext时有一点要注意:不要在Action的构造函数里使用 www.61k.com (),因为这个时候ActionContext里的一些值也许没有设置,这时通过 ActionContext取得的值也许是null。

四 : Office Ribbon 按Group类型操作的实现方法

Office中有1700多个已经定义好的Control。

这些Control的类型button、toggleButton、splitButton、gallery等

他们的外层还定义有组Group,将一个或多个Control包括。

现在已知利用指定Control的idMso的方式,在commands中可以实现“禁用”。

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">

<commands>

<command idMso="Font" enabled="false"/>

</commands>

</customUI>

但是如果实现按照一个Group直接“禁用”的方式???

例如对“GroupFont”

需要注意的是,要求是“禁用”,并不是关闭选项卡和隐藏Group!

-------------------------------分割线——————————————————————————

以下是Ribbon的一些已知操作方式:

● 可以隐藏选项卡。下列RibbonX代码隐藏了三个选项卡:

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">

<ribbon>

<tabs>

<tab idMso="TabPageLayoutExcel" visible="false" />

<tab idMso="TabData" visible="false" />

<tab idMso="TabReview" visible="false" />

</tabs>

</ribbon>

</customUI>

● 还可以隐藏选项卡中的组。下面的RibbonX代码隐藏了“插入”选项卡上的4个组(只留下“图表”组):

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">

<ribbon>

<tabs>

<tab idMso="TabInsert">

<group idMso="GroupInsertTablesExcel" visible="false" />

<group idMso="GroupInsertIllustrations" visible="false" />

<group idMso="GroupInsertLinks" visible="false" />

<group idMso="GroupInsertText" visible="false" />

</tab>

</tabs>

</ribbon>

</customUI>

● 可以将自己的宏赋给内置控件,这称为“重定义控件目标”。下列RibbonX代码截获了三个内置命令:

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">

<commands>

<command idMso="FileSave" onAction="mySave"/>

<command idMso="FilePrint" onAction="myPrint"/>

<command idMso="FilePrintQuick" onAction="myPrint"/>

</commands>

</customUI>

● 还可以编写RibbonX代码来禁用一个或多个内置控件。下列代码禁用了“插入剪贴画”命令:

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">

<commands>

<command idMso="ClipArtInsert" enabled="false"/>

</commands>

</customUI>

五 : iPhone4S通过声音来进行数据共享实现方法

Chirp是一款将会改变我们共享数据的方式的新应用。这款应用之所以命名Chirp,是因为它是利用声音在手机之间传送文字、图片以及连接,而其在进行数据传送时会发出像机械鸟鸣一样的声音。

iPhone4S怎样通过声音来进行数据共享

用户利用iPhone内置的扬声器就可以共享照片、链接、备忘录等。Chirp允许用户向附近任意一款同样使用这款应用的设备来发送各种信息;使用这款应用来发送和接收相机照片,并与其他人进行共享。

1、与好友组群共享照片

2、一键式操作,十分简单

3、随心所以共享链接

在这里需要再次提醒大家,利用Chirp在设备之间发送内容时,必须确保接收方也使用这款应用,同时需用网络连接才可以进行共享。在喧闹的地方,这款应用表现也很不赖。

本文标题:idea进入方法实现类-Yii框架批量插入数据扩展类的简单实现方法
本文地址: http://www.61k.com/1136835.html

61阅读| 精彩专题| 最新文章| 热门文章| 苏ICP备13036349号-1