php 导入excel存入mysql 数据库, 利用ExcelParser

 更新时间:2016年11月25日 15:57  点击:1842

class ExcelParser
{
    private $_data=array(0,'');
    private $_excel_handle;
    private $_excel=array();
    /**
     * 构造函数
     * @param <string> $filename 上传文件临时文件名称
     */
    public function __construct($filename)
    {
        /**
         * 引入excelparser类
         * 普通方法为
         * requires 路径.'excelparser.php';
         */
        import('@.Util.PHPExcelParser.excelparser','','.php');
        $this->_excel_handle=new ExcelFileParser();
        //错误获取
        $this->checkErrors($filename);
    }
    /**
     * 错误校验
     */
    private function checkErrors($filename)
    {
        /**
         * 方法一
         */
        $error_code=$this->_excel_handle->ParseFromFile($filename);
        /**
         * 方法二
         * $file_handle = fopen($this->_filename,'rb');
         * $content = fread($file_handle,filesize($this->_filename));
         * fclose($file_handle);
         * $error_code = $this->_excel->ParseFromString($content);
         * unset($content,$file_handle);
         */
        switch($error_code)
        {
            case 0:
                //无错误不处理
                break;
            case 1:
                $this->_data=array(1,'文件读取错误(Linux注意读写权限)');
                break;
            case 2:
                $this->_data=array(1,'文件太小');
                break;
            case 3:
                $this->_data=array(1,'www.111cn.net读取Excel表头失败');
                break;
            case 4:
                $this->_data=array(1,'文件读取错误');
                break;
            case 5:
                $this->_data=array(1,'文件可能为空');
                break;
            case 6:
                $this->_data=array(1,'文件不完整');
                break;
            case 7:
                $this->_data=array(1,'读取数据错误');
                break;
            case 8:
                $this->_data=array(1,'版本错误');
                break;
        }
        unset($error_code);
    }
    /**
     * Excel信息获取
     */
    private function getExcelInfo()
    {
        if(1==$this->_data[0])return;
        /**
         * 获得sheet数量
         * 获得sheet单元对应的行和列
         */
        $this->_excel['sheet_number']=count($this->_excel_handle->worksheet['name']);
        for($i=0;$i<$this->_excel['sheet_number'];$i++)
        {
            /**
             * 行于列
             * 注意:从0开始计数
             */
            $row=$this->_excel_handle->worksheet['data'][$i]['max_row'];
            $col=$this->_excel_handle->worksheet['data'][$i]['max_col'];
            $this->_excel['row_number'][$i]=($row==NULL)?0:++$row;
            $this->_excel['col_number'][$i]=($col==NULL)?0:++$col;
            unset($row,$col);
        }
    }
    /**
     * 中文处理函数
     * @return <string>
     */
    private function uc2html($str)
    {
        $ret = '';
        for( $i=0; $i<strlen($str)/2; $i++ )
        {
            $charcode = ord($str[$i*2])+256*ord($str[$i*2+1]);
            $ret .= '&#'.$charcode.';';
        }
        return mb_convert_encoding($ret,'UTF-8','HTML-ENTITIES');
    }
    /**
     * Excel数据获取
     */
    private function getExcelData()
    {
        if(1==$this->_data[0])return;

        //修改标记
        $this->_data[0]=1;
        //获取数据
        for($i=0;$i<$this->_excel['sheet_number'];$i++)
        {
            /**
             * 对行循环
             */
            for($j=0;$j<$this->_excel['row_number'][$i];$j++)
            {
                /**
                 * 对列循环
                 */
                for($k=0;$k<$this->_excel['col_number'][$i];$k++)
                {
                    /**
                     * array(4) {
                     *   ["type"]   => 类型 [0字符类型1整数2浮点数3日期]
                     *   ["font"]   => 字体
                     *   ["data"]   => 数据
                     *   ...
                     * }
                     */
                    $data=$this->_excel_handle->worksheet['data'][$i]['cell'][$j][$k];
                    switch($data['type'])
                    {
                        case 0:
                            //字符类型
                            if($this->_excel_handle->sst['unicode'][$data['data']])
                            {
                                //中文处理
                                $data['data'] = $this->uc2html($this->_excel_handle->sst['data'][$data['data']]);
                            }
                            else
                            {
                                $data['data'] = $this->_excel_handle->sst['data'][$data['data']];
                            }
                            break;
                        case 1:
                            //整数
                            //TODO
                            break;
                        case 2:
                            //浮点数
                            //TODO
                            break;
                        case 3:
                            //日期
                            //TODO
                            break;
                    }
                    $this->_data[1][$i][$j][$k]=$data['data'];
                    unset($data);
                }
            }
        }
    }
    /**
     * 主函数
     * @return <array> array(标识符,内容s)
     */
    public function main()
    {
        //Excel信息获取
        $this->getExcelInfo();
        //Excel数据获取
        $this->getExcelData();
        return $this->_data;
    }
}

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
  <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
  <TITLE>生成缩略图</TITLE>
</HEAD>
 <BODY>
<?php
$c = array('dir'=>'./images','newdir'=>'./thumb','w'=>'200','h'=>'200');
//只处理文件名中含有small的文件,如果处理所有文件,请设置为 '.'
$only = '.';

//如果不希望覆盖已经存在的图片 将此行设为0;
$over = 1;

//是否处理GIF图,0为不处理
$regif = 1;

 

if($_GET['do']=='start'){
 $file = array();
 $dir = $_POST['dir'];
 $newdir = $_POST['newdir'];
 $w = intval($_POST['w']);
 $h = intval($_POST['h']);
 $d = @dir($dir) or die('目录不存在!'); 
 $config = "<?php return array('dir'=>'".$dir."','newdir'=>'".$newdir."','w'=>'".$w."','h'=>'".$h."'); ?>";
 savefile($c, $config); 
 while ($a=$d->read()){
  $type = substr(strrchr($a,"."),1);
  if($a!=='.' && $a!=='..'){
   if(is_dir($dir.'/'.$a)){
    $zdir[]=$a;
   } elseif($type=='jpg' || $type=='gif' || $type=='bmp' || $type=='png') {
    if(strstr($a, $only)){
     $file[]=$dir.'/'.$a;
    }
   }   
  }
 }
 $rand = rand(100,999);
 $img = new image($dir, $newdir);
 $img->over = $over;
 $img->regif= $regif;
 echo "<div style='width:800px'>";
 foreach ($file as $key){
  $src = $img->reImg($key, $w, $h);
  echo "<div style='float:left;border:#666666 1px dotted; width:$w px; height:$h px; padding: 5px; margin:5px;'><img src=$src?$rand></div>";
 }
 echo "</div>";
 die("<br><br><label> <input name="go" type="button" id="go" onClick="location='index.php'" value=" www.111cn.net继 续 处 理 新 的 图 片 "></label><br><br>");
}
?>
 <div style="clear:both; width:250px; height:110px; border:#006633 1px dashed; padding:5px; font-size:12px; color:#009933">
 <form name="form1" method="post" action="?do=start">
   <label>源目录:
   <input name="dir" type="text" id="dir" value="<?=$c['dir']?>">
</label>
<br><br>
<label>保存到:
<input name="newdir" type="text" id="newdir" value="<?=$c['newdir']?>">
</label>
<br><br>
<label>宽 &nbsp;高:
<input name="w" type="text" id="w" value="<?=$c['w']?>" size="7" maxlength="3">
X
<input name="h" type="text" id="h" value="<?=$c['h']?>" size="7" maxlength="3">
</label>
  <br>
  <br>  
   <label>  
   <input type="submit" name="search" id="search" value="生 成">
   </label>  
 </form>
 
</div>
&copy;2008 <a href="http://www.111cn.net" target=_blank>wbsifan</a>
</BODY>
</HTML>
<?
<?php
//创建目录(目录, [模式])
function mkdirs($l1, $l2 = 0777){
 if(!is_dir($l1)){
  //如果目录不存在,递归建立
  mkdirs(dirname($l1), $l2);  
  return @mkdir($l1, $l2);
 }
 return true;
}

//保存文件(文件, [内容])
function savefile($l1, $l2=''){  
 if(function_exists(file_put_contents)){
  file_put_contents($l1, $l2);
 } else{
  $fp = @fopen($l1, 'wb');
  @fwrite($fp, $l2);
  fclose($fp);
 }
}

//获取文件后缀(文件)
function getfix($l1){
 return end(explode('.', $l1));
}

//是否为允许类型(当前, 允许)
function checkfix($l1, $l2){
 if(!is_array($l2)){
  $l2 = explode(',', str_replace(' ', '', $l2));
 }
 return in_array($l1, $l2) ? 1 : 0;
}

class image{
 //源地址
 var $src;  
 //新图路径(本地化后)
 var $newsrc;
  
 //允许的图类型
 var $allowtype = array('.jpg','.gif','.png','.jpeg');  
 //是否缩略GIF, 为0不处理
 var $regif   = 0;
 //是否保留源文件(1为保留, 0为MD5)
 var $keep = 0;
 //是否可以覆盖已存在的图片,为0则不可覆盖
 var $over = 0;
   
 //图片源目录 
 var $dir; 
 //处理后的目录 
 var $newdir; 


 function __construct($l1=null, $l2=null){
  $this->dir   = $l1 ? $l1 : "./images/temp";
  $this->newdir = $l2 ? $l2 : "./images/s";
 }
 
 function image($l1=null, $l2=null){
  $this->__construct($l1, $l2);
 }
 
 /**
  * 处理后的文件路径
  * 将源图片,MD5文件名后保存到新的目录里
  *
  * @ param  rename()
  * @ return 处理后的文件名
  */
 function reName($src){
  //MD5后文件名(例如:3293okoe.gif)
  $l1 = substr(md5($src),10,10).strrchr($src,"."); 
  //处理后文件名
  $l1  = $this->w.'_'.$this->h.'_'.$l1; 
  //返回处理后的地址
  return $this->newdir.'/'.$l1;
 }
 
  
 /**
  * 生成缩略图
  *
  * @ param  Mini(图片地址, 宽度, 高度, 质量)
  *   如果要保留原来的文件名,请设置 $o->keep = 1;
  * @ return 处理后的图片地址
  */
 function Mini($src,$w,$h, $q=80){ 
  $this->src = $src;
  $this->w = $w;
  $this->h = $h;
  
  //是否处理GIF图
  if(strrchr($src, ".") == ".gif" && $this->regif == 0){
   return $this->src;
  } 
  
  //是否保留原文件名,默认不保留
  if(!$this->keep){
   //改名后的文件地址
   $newsrc = $this->reName($src);
  } else {
   //保持原名
   $src = str_replace('\', '/', $src);
   $newsrc = $this->newdir.strrchr($src, "/");
  }
  
  //如果已存在,直接返回地址 
  if(file_exists($newsrc) && $this->over == 0){
   return $newsrc;
  }
  
  //如果是网络文件,先保存
  if(strstr($src, "http://") && !strstr($src, $_SERVER['HTTP_HOST'])){
   $src = $this->getimg($src);
  } 
  //获取图片属性
  $arr = getimagesize($src);  
  $ow = $arr[0];
  $oh = $arr[1];
  $ot = $arr[2];  
  switch($ot){
   case 1:
    $im = imagecreatefromgif($src);
    break;
   case 2:
    $im = imagecreatefromjpeg($src);
    break;
   case 3:
    $im = imagecreatefrompng($src);
    break;
   default:
    return 0;
  }
  //处理缩略图
  $nim = imagecreatetruecolor($w,$h);
  $k1 = round($h/$w,2);
  $k2 = round($oh/$ow,2);
  if ($k1<$k2){
   $oow = $ow;
   $ooh = round($ow*$k1);
   $sw = 0;
   $sh = ($oh-$ooh)/2;
  }
  else {
   $oow = $oh/$k1;
   $ooh = $oh;
   $sw = ($ow-$oow)/2;
   $sh = 0;
  }
  //生成图片
  if(function_exists(imagecopyresampled)){
   imagecopyresampled($nim,$im,0,0,$sw,$sh,$w,$h,$oow,$ooh);   
  }
  else {
   imagecopyresized($nim,$im,0,0,$sw,$sh,$w,$h,$oow,$ooh);
  }
  //处理后的目录是否存在
  if(!is_dir($this->newdir)){
   @mkdir($this->newdir);
  } 
  //保存图片    
  switch($ot){
   case 1:
    $rs = imagegif($nim,$newsrc);
    break;
   case 2:
    $rs = imagejpeg($nim,$newsrc,$q);
    break;
   case 3:
    $rs = imagepng($nim,$newsrc);
    break;
   default:
    return 0;
  }
  //返回处理后路径
  return $newsrc;    
 }
   
 /**
  * 保存网络图片
  *
  * @ param  getImg(源图)
  * @ return 保存后的本地址址(本地目录的MD5文件名)
  */
 function getimg($l1){
  $l2 = $this->dir.'/'.substr(md5($l1),10,10).strrchr($l1,".");
  //文件存在,直接返回地址
  if(file_exists($l2)){   
   //echo "exits...";
   return $l2;
  }
  
  //开始获取文件,并返回新路径 
  $img = file_get_contents($l1);     
  if($img){
   if(!is_dir($this->dir)){
    @mkdir($this->dir);
   } 
   savefile($l2, $img);
   //echo "file_get..";
   return $l2;
  }    
 }
 
 /**
  * 转换缩略图www.111cn.net(文件名和结构不变)
  *
  * @ param  mini(源地址, 宽度, 高度, 质量 )
  * @ return 生成的地址
  */
 
 function reImg($src, $w, $h, $q=80){
  $this->keep = 1;
  return $this->Mini($src, $w, $h, $q);
 } 
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Excel数据获取演示</title>
<meta name="Keywords" content="TODO" />
<meta name="Description" content="TODO"/>
</head>
<body>
    <div>
      <div>提交表单</div>
      <div>
        <form method="POST" action="www.111cn.net/Index/parse" enctype="multipart/form-data">
            <input type="file" name="excel" value="" />
            <input type="submit" name="submit" value="提交" />
        </form>
      </div>
    </div>
</body>
</html>

public function parse()
    {
       /**
        * $_FILES数组说明
        * array(n) {
        *   ["表单文件框名称"] => array(5) {
        *       ["name"]        => 提交文件名称
        *       ["type"]        => 提交文件类型 Excel为"application/vnd.ms-excel"
        *       ["tmp_name"]    => 临时文件名称
        *       ["error"]       => 错误(0成功1文件太大超过upload_max_filesize2文件太大超过MAX_FILE3上传不完整4没有上传文件)
        *       ["size"]        => 文件大小(单位:KB)
        *   }
        * }
        */
        $return=array(0,'');
        /**
         * 判断是否提交
         * is_uploaded_file(文件名称)用于确定指定的文件是否使用POST方法上传,防止非法提交,通常和move_upload_file一起使用保存上传文件到指定的路径
         */
        if(!isset($_FILES) || !is_uploaded_file($_FILES['excel']['tmp_name']))
        {
            $return=array(1,'提交不合法');
        }
        //处理
        if(0 == $return[0])
        {
            import('@.Util.ExcelParser');
            $excel=new ExcelParser($_FILES['excel']['tmp_name']);
            $return=$excel->main();
        }
        //输出处理
        print_r($return);
?>

// 创建数据库教程连接
mysql教程_connect('localhost','111cn.net','www.111cn.net');
mysql_select_db('www.111cn.net');//数据库选择
mysql_query('set names "gbk"');

//进度查询操作
?>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<script language="javascript教程">
 check111cnNet()
 {
  
  if( myfm.uid.value =='' )
  {
   alert('www.111cn.net提示你:用户名错误');
   return false;
  }
  if( ! myfm.pwd.value!='' && myfm.pwd.value == myfm.pwd1.value )
  {
  
   alert('www.111cn.net提示你:二次密码不正确');
   return false;
  }
   
 }
</script>
</head>

<body>
<form id="myfm" name="myfm" method="post" action="">
  <label>
  用户名
  <input type="text" name="uid" />
  <br>
  密码
  <input type="text" name="pwd" />
  <br>
  密码2
  <input type="text" name="pwd2" />
<br>
  </label>
  <label>
  <input type="submit" name="Submit" value="注册" onClick="return check111cnNet();" />
  </label>
</form>
</body>
</html>
<?php


if($_POST)
{
 $uid = $_POST['uid'];
 $pwd = $_POST['pwd'];
 $pwd1 = $_POST['pwd1'];
 if( empty( $uid ) ){exit();} 
 $sql = "Select * from user where uid ='$uid' limit 0,10";
 $query = mysql_query($sql ) or die("www.111cn.net提示你:查询出错了");
 
 if( mysql_num_rows( $query ) )
 {
  echo '用户己被注册';
 }
 else  
 {
  if(mysql_query("insert into user(uid,pwd) values('$uid','md5($pwd)')"))
  {
   echo 'www.111cn.net提示你:注册成功';
  }
  else
  {
   echo '注册失败';
  }
 }
}

/*
 数据表结构
 CREATE TABLE `111cnNet`.`user` (
 `id` INT( 8 ) NOT NULL AUTO_INCREMENT ,
 `uid` CHAR( 150 ) NULL ,
 `pwd` char(32) NULL ,
 PRIMARY KEY ( `id` )
 ) ENGINE
本教程只供学习用没进行安全处理,如用于商业用途出现任何问题与本站www.111cn.net无关
*/


// 纯本站原创转载必须注明来源否则必究责任 来源http://www.111cn.net/phper/php.html
?>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<script language="javascript教程">
 check111cnNet()
 {
  var keyword = myfm.keyword.value;
  if( keyword =='' )
  {
   alert('www.111cn.net提示你:请输入要查询的内容');
   return false;
  }
 }
</script>
</head>

<body>
<form id="myfm" name="myfm" method="post" action="">
  <label>
  输入查询关键字:
  <input type="text" name="keyword" />
  </label>
  <label>
  <input type="submit" name="Submit" value="提交" onClick="return check111cnNet();" />
  </label>
</form>
</body>
</html>
<?php
// 创建数据库教程连接
mysql教程_connect('localhost','111cn.net','www.111cn.net');
mysql_select_db('www.111cn.net');//数据库选择
mysql_query('set names "gbk"');

//进度查询操作

if($_POST)
{
 $keyword = $_POST['keyword'];
 $sql = "Select * from search where title like '%$keyword%' limit 0,10";
 $query = mysql_query($sql ) or die("www.111cn.net提示你:查询出错了");
 
 if( mysql_num_rows( $query ) )
 {
  while( $rs = mysql_fetch_array( $query ) )
  {
   echo $rs['title'];
  }
 }
 else  
 {
  echo '没有要找的内容';
 }
}

/*
 数据表结构
 CREATE TABLE `111cnNet`.`test` (
 `id` INT( 8 ) NOT NULL AUTO_INCREMENT ,
 `title` CHAR( 150 ) NULL ,
 `content` TEXT NULL ,
 PRIMARY KEY ( `id` )
 ) ENGINE
*/
//函数解析
mysql_connect  //数据库连接了有三个参数分别为 数据库服务器名称,用户名,密码
mysql_select_db//参数有二个,第二个可选 ,第一个数据库名称,第二个数据库连接$connwww.111cn.net
mysql_query('set names "gbk"'); //这一句比较重要,就是设置读取数据库内容的编码了,这句要设置与文档编辑一致,否则可能出现乱码。

mysql_query //数据查询,有二个参数,第一个必须,为sql查询语句。
mysql_num_rows //统计mysql_query查询记录多少条,返回为int型
mysql_fetch_array //读取当前记录集一条记录保存到数组。
$_POST
if else
while
// 纯本站原创转载必须注明来源否则必究责任 来源http://www.111cn.net/phper/php.html
?>

[!--infotagslink--]

相关文章

  • PHP 数据库缓存Memcache操作类

    操作类就是把一些常用的一系列的数据库或相关操作写在一个类中,这样调用时我们只要调用类文件,如果要执行相关操作就直接调用类文件中的方法函数就可以实现了,下面整理了...2016-11-25
  • C#连接SQL数据库和查询数据功能的操作技巧

    本文给大家分享C#连接SQL数据库和查询数据功能的操作技巧,本文通过图文并茂的形式给大家介绍的非常详细,需要的朋友参考下吧...2021-05-17
  • php简单数据操作的实例

    最基础的对数据的增加删除修改操作实例,菜鸟们收了吧...2013-09-26
  • C#从数据库读取图片并保存的两种方法

    这篇文章主要介绍了C#从数据库读取图片并保存的方法,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下...2021-01-16
  • 解决Mybatis 大数据量的批量insert问题

    这篇文章主要介绍了解决Mybatis 大数据量的批量insert问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-09
  • Antd-vue Table组件添加Click事件,实现点击某行数据教程

    这篇文章主要介绍了Antd-vue Table组件添加Click事件,实现点击某行数据教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-11-17
  • 详解如何清理redis集群的所有数据

    这篇文章主要介绍了详解如何清理redis集群的所有数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-18
  • Intellij IDEA连接Navicat数据库的方法

    这篇文章主要介绍了Intellij IDEA连接Navicat数据库的方法,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借价值,需要的朋友可以参考下...2021-03-25
  • 在数据库里将毫秒转换成date格式的方法

    在开发过程中,我们经常会将日期时间的毫秒数存放到数据库,但是它对应的时间看起来就十分不方便,我们可以使用一些函数将毫秒转换成date格式。 一、 在MySQL中,有内置的函数from_unixtime()来做相应的转换,使用如下: 复制...2014-05-31
  • vue 获取到数据但却渲染不到页面上的解决方法

    这篇文章主要介绍了vue 获取到数据但却渲染不到页面上的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-19
  • C#操作本地文件及保存文件到数据库的基本方法总结

    C#使用System.IO中的文件操作方法在Windows系统中处理本地文件相当顺手,这里我们还总结了在Oracle中保存文件的方法,嗯,接下来就来看看整理的C#操作本地文件及保存文件到数据库的基本方法总结...2020-06-25
  • 如何解决局域网内mysql数据库连接慢

    通过内网连另外一台机器的mysql服务, 确发现速度N慢! 等了大约几十秒才等到提示输入密码。 但是ping mysql所在服务器却很快! 想到很久之前有过类似的经验, telnet等一些服务在连接请求的时候,会做一些反向域名解析(如果...2015-10-21
  • mybatis-plus 处理大数据插入太慢的解决

    这篇文章主要介绍了mybatis-plus 处理大数据插入太慢的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-12-18
  • php把读取xml 文档并转换成json数据代码

    在php中解析xml文档用专门的函数domdocument来处理,把json在php中也有相关的处理函数,我们要把数据xml 数据存到一个数据再用json_encode直接换成json数据就OK了。...2016-11-25
  • MySQL快速复制数据库数据表的方法

    某些时候,例如为了搭建一个测试环境,或者克隆一个网站,需要复制一个已存在的mysql数据库。使用以下方法,可以非常简单地实现。假设已经存在的数据库名字叫db1,想要复制一份,命名为newdb。步骤如下:1. 首先创建新的数据库newd...2015-10-21
  • mysqldump命令导入导出数据库方法与实例汇总

    mysqldump命令的用法1、导出所有库系统命令行mysqldump -uusername -ppassword --all-databases > all.sql 2、导入所有库mysql命令行mysql>source all.sql; 3、导出某些库系统命令行mysqldump -uusername -ppassword...2015-10-21
  • Mysql数据库错误代码中文详细说明

    1005:创建表失败1006:创建数据库失败1007:数据库已存在,创建数据库失败1008:数据库不存在,删除数据库失败1009:不能删除数据库文件导致删除数据库失败1010:不能删除数据目录导致删除数据库失败1011:删除数据库...2013-09-23
  • postgresql数据添加两个字段联合唯一的操作

    这篇文章主要介绍了postgresql数据添加两个字段联合唯一的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-04
  • c#异步读取数据库与异步更新ui的代码实现

    这篇文章主要介绍了c#从数据库里取得数据并异步更新ui的方法,大家参考使用吧...2020-06-25
  • Vue生命周期activated之返回上一页不重新请求数据操作

    这篇文章主要介绍了Vue生命周期activated之返回上一页不重新请求数据操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-26