精华内容
下载资源
问答
  • 下面的代码将依据你的数据库配置载入并初始化数据库类: $this->load->database();   一旦被载入,你可以在任何地方像这样使用它: 注意: 如果你的所有页面均要求初始化数据库类,你可以让它自动加载。详见 数据库...

    数据库快速入门例子代码
    下面的内容将简单说明怎样使用数据库。更详细的信息请阅读各个函数的单独介绍页面。

    初始化数据库类
    下面的代码将依据你的数据库配置载入并初始化数据库类:

    $this->load->database();
     
    一旦被载入,你可以在任何地方像这样使用它:

    注意: 如果你的所有页面均要求初始化数据库类,你可以让它自动加载。详见 数据库连接。

    多结果标准查询(对象形式)
    $query = $this->db->query('SELECT name, title, email FROM my_table');

    foreach ($query->result() as $row)
    {
      echo $row->title;
      echo $row->name;
      echo $row->email;
    }

    echo 'Total Results: ' . $query->num_rows(); 
    上面的result()函数返回一个对象的数组。例如:$row->title

    多结果标准查询(数组形式)
    $query = $this->db->query('SELECT name, title, email FROM my_table');

    foreach ($query->result_array() as $row)
    {
      echo $row['title'];
      echo $row['name'];
      echo $row['email'];
    }
     
    上面的result_array()函数返回一个带下标的数组。例如:$row['title']

    测试查询结果
    如果你的查询可能不返回结果,我们建议你先使用 num_rows()函数来测试:

    $query = $this->db->query("YOUR QUERY");

    if ($query->num_rows() > 0)
    {
      foreach ($query->result() as $row)
      {
      echo $row->title;
      echo $row->name;
      echo $row->body;
      }

    单结果标准查询(对象形式)
    $query = $this->db->query('SELECT name FROM my_table LIMIT 1');

    $row = $query->row();
    echo $row->name;

    上面的row()函数返回一个 对象。例如:$row->name

    单结果标准查询(数组形式)
    $query = $this->db->query('SELECT name FROM my_table LIMIT 1');

    $row = $query->row_array();
    echo $row['name'];

    上面的row_array()函数返回一个 数组。例如:$row['name']

    标准插入(insert)
    $sql = "INSERT INTO mytable (title, name) 
      VALUES (".$this->db->escape($title).", ".$this->db->escape($name).")";

    $this->db->query($sql);

    echo $this->db->affected_rows(); 
    快捷查询
    快捷查询类能为我们提供快速取得数据的途径:

    $query = $this->db->get('table_name');

    foreach ($query->result() as $row)
    {
      echo $row->title;
    }
     
    上面的get()函数返回数据表中所有的结果。 快捷查询类 提供所有数据库操作的快捷函数。

    快捷插入(insert)
    $data = array(
      'title' => $title,
      'name' => $name,
      'date' => $date
      );

    $this->db->insert('mytable', $data); 

    // Produces: INSERT INTO mytable (title, name, date) VALUES ('{$title}', '{$name}', '{$date}')

    数据库配置
    CodeIgniter 有一个配置文件让你存放数据库连接值(username:用户名,password:密码,database name:数据库名,等等..). 配置文件位于以下路径:

    application/config/database.php

    配件文件存放在一个如下格式的一个多维数组里:

    $db['default']['hostname'] = "localhost";
    $db['default']['username'] = "root";
    $db['default']['password'] = "";
    $db['default']['database'] = "database_name";
    $db['default']['dbdriver'] = "mysql";
    $db['default']['dbprefix'] = "";
    $db['default']['pconnect'] = TRUE;
    $db['default']['db_debug'] = FALSE;
    $db['default']['cache_on'] = FALSE;
    $db['default']['cachedir'] = "";
    $db['default']['char_set'] = "utf8";
    $db['default']['dbcollat'] = "utf8_general_ci";
     
    我们使用多维数组的原因是为了让你随意的存储多个连接值的设置。举例:如果你运行多个环境(development:开发、production:制作、test:测试 等等..),你能为每个环境建立独立的连接组,并在组直接进行切换。举例,设置一个"test"环境,你可以这样做:

    $db['test']['hostname'] = "localhost";
    $db['test']['username'] = "root";
    $db['test']['password'] = "";
    $db['test']['database'] = "database_name";
    $db['test']['dbdriver'] = "mysql";
    $db['test']['dbprefix'] = "";
    $db['test']['pconnect'] = TRUE;
    $db['test']['db_debug'] = FALSE;
    $db['test']['cache_on'] = FALSE;
    $db['test']['cachedir'] = "";
    $db['test']['char_set'] = "utf8";
    $db['test']['dbcollat'] = "utf8_general_ci";
     
    那么,告诉系统使用"test"组,你可以设置位于配置文件中的变量:

    $active_group = "test";
     
    注意: "test"的名字是任意的,这可以让你自由设置,我们的主要连接默认使用"default"这个名字,当然,您可以基于您的项目为它起一个更有意义的名字。

    Active Record
    Active Record 类 可以通过数据库配置文件里的$active_record变量进行全局的设定(允许/禁止 TRUE/FALSE (boolean)). 如果你不用这个类,哪么你可以通过将这个变量值设置成FALSE来减少在数据库类初始化时对电脑资源的消耗。

    $active_record = TRUE;
     
    注意: 一些CodeIgniter的类,例如Sessions,在执行一些函数的时候需要Active Records的支持。

    参数解析:
    hostname - 数据库的主机名,通常位于本机,可以表示为 "localhost". 
    username - 需要连接到数据库的用户名. 
    password - 登陆数据库的密码. 
    database - 你需要连接的数据库名. 
    dbdriver - 数据库类型。如:mysql、postgres、odbc 等。必须为小写字母。 
    dbprefix - 当运行Active Record查询时数据表的前缀,它允许在一个数据库上安装多个CodeIgniter程序. 
    pconnect - TRUE/FALSE (boolean) - 使用持续连接. 
    db_debug - TRUE/FALSE (boolean) - 显示数据库错误信息. 
    cache_on - TRUE/FALSE (boolean) - 数据库查询缓存是否开启,详情请见数据库缓存类。 
    cachedir - 数据库查询缓存目录所在的服务器绝对路径。 
    char_set - 与数据库通信时所使用的字符集。 
    dbcollat - 与数据库通信时所使用的字符规则(character collation )。 
    port - 数据库端口号. 当前只用于 Postgres 驱动程序. 要使用这个值,你应该添加一行代码到数据库配置数组。
    $db['default']['port'] = 5432;
     
    提示: 并不是所有的值都是必须的,这取决与您所使用的数据库平台,如(MySQL, Postgres, 等.) 例如, 当你使用SQLite时,你不需要提供username 或 password, 数据库名字就是您数据库文件的路径. 以上内容假定您使用的是 MySQL 数据库.

     

    连接你的数据库
    有两种方法连接数据库:

    自动连接
    “自动连接” 功能将在每个一页面加载时被自动实例化数据库类。要启用“自动连接”,可在如下文件中的 library 数组里添加 database:

    application/config/autoload.php

    手动连接
    如果仅仅是一部分页面要求数据库连接,你可以在你有需要的函数里手工添加如下代码或者在你的类里手工添加以供该类使用。

    $this->load->database();
     
    如果以上函数的第一个参数没有任何信息,它将会在系统指定的数据库配置文件中寻找,对多数人而言,这是一个首选的方法。

    可用的参数
    数据库连接值,用数组或DSN字符串传递。 
    TRUE/FALSE (boolean)。是否返回连接ID (参阅下面的“连接多数据库”)。 
    TRUE/FALSE (boolean)。是否启用 Active Record 类。默认设置为 TRUE。 
    手动连接到一个数据库
    函数的第一个参数能够从你的配置文件中自由的指定你自定义的详细的数据库配置信息。或者你甚至可以不通过指定的配置文件来提交数据库的连接属性。样例:

    要从你的配置文件中选择一个指定的数组你可以这么做:

    $this->load->database('group_name');
     
    group_name指的是存在于你的配置文件中的带有数据库连接信息的数组的名字。

    要手动连接你要求的数据库你可以通过定义以下数组来实现:

    $config['hostname'] = "localhost";
    $config['username'] = "myusername";
    $config['password'] = "mypassword";
    $config['database'] = "mydatabase";
    $config['dbdriver'] = "mysql";
    $config['dbprefix'] = "";
    $config['pconnect'] = FALSE;
    $config['db_debug'] = TRUE;
    $config['cache_on'] = FALSE;
    $config['cachedir'] = "";
    $config['char_set'] = "utf8";
    $config['dbcollat'] = "utf8_general_ci";

    $this->load->database($config);
     
    想得到每一个配置属性的详细信息可点击 这里.

    或者你可以以DSN的方式提交数据库配置信息。 DSN必然通过以下方式实现:

    $dsn = 'dbdriver://username:password@hostname/database';

    $this->load->database($dsn);
     
    当用 DSN 字符串连接时,要覆盖配置默认值,则添加配置变量为查询字符串。

    $dsn = 'dbdriver://username:password@hostname/database?char_set=utf8&dbcollat=utf8_general_ci&cache_on=true&cachedir=/path/to/cache';

    $this->load->database($dsn);
     
    连接多数据库
    如果你需要同时连接多于一个的数据库,你可以用以下方式来实现:

    $DB1 = $this->load->database('group_one', TRUE);
    $DB2 = $this->load->database('group_two', TRUE); 
    注意:改变 "group_one" 和 "group_two" 为你指定了连接属性的组名 (或者通过上边说过的连接数组的数组名)。

    通过设置函数的第二个参数为TRUE(boolean)来返回一个数据库对象。

    当你使用这种方法,你将用对象名来执行操作命令而不是用户向导模式,也就是说,你将用以下方式执行数据库操作:

    $DB1->query();
    $DB1->result();
    etc...

    而不是:

    $this->db->query();
    $this->db->result();
    etc...

    重新连接 / 保持连接有效
    当你正在进行一些重量级的PHP操作(例如处理图片)时,如果超出了数据库服务器的空闲超时限度,你应该考虑在执行更多查询之前使用reconnect()方法来向服务器发送ping命令,这样可以优雅地保持或重新建立连接。

    $this->db->reconnect();

    CI中的数据库操作

     

    在system/application/config 文件夹和里面的config文件里已经配置了参数

    $active_group = "default";
    $db['default']['hostname'] = "";  hostname: 你的数据库的位置, 举例来说, 'localhost' 或 IP 地址 
    $db['default']['username'] = "";  username和password: 使用者名称和密码必须有充分的权限,允许你的网站存取数据库中的数据。
    $db['default']['password'] = ""; 
    $db['default']['database'] = "";  database: 你的数据库的名字, 举例来说, 'websits' 
    $db['default']['dbdriver'] = "";  dbdriver: 你正在使用的数据库的类型 - CI可受的有选项有MySQL、MySQLi、 Postgre SQL、ODBC和MS SQL

    CI中第一次连接数据库,在控制器或模型的构造函数里输入以下语句
    $this->load->database();
    就不需要重复连接, 在那个控制器或模型就可以做任意多次的查询。


    查询操作(等同select)
    方法一:
    $query = $this->db->get('sites'); //sites为表名
    这是一个“select *”查询,目标是site表。换句话说,它取回所有的行
    也可用下面这种方式写:
    $this->db->from('sites');
    $query = $this->db->get();
    如果想要得到特定的列,而不是全部列,这样做:
    $this->db->select('url','name','clientid');//'url','name','clientid'为列名
    $query = $this->db->get('sites');
    如果排序:
    $this->db->select('url','name','clientid');//'url','name','clientid'为列名
    $this->db->orderby("name", "desc");
    $query = $this->db->get('sites');
    如果想要限制返回的行数,比如想要最初五个结果
    $this->db->select('url','name','clientid');//'url','name','clientid'为列名
    $this->db->orderby("name", "desc");
    $this->db->limit(5);
    $query = $this->db->get('sites');
    写where语句
    ==的情况
    $this->db->where('clientid', '1');  //clientid属性  "1"为属性值
    !=的情况
    $this->db->where('url !=', 'www.mysite.com');
    $this->db->where('id >', '3');
    where后几个条件的可以写几个where 如
    $this->db->where('url !=','www.mysite.com');
    $this->db->where('id >', '3');
    WHERE…OR的情况
    $this->db->where('url !=','www.mysite.com' );
    $this->db->orwhere('url !=','www.anothersite.com' );
    连接表
    $this->db->from('sites');
    $this->db->join('people', 'sites.peopleid = people.id');
    写个完整的查询
    $this->db->select('url','name','clientid','people.surname AS client');
    $this->db->where('clientid', '3');
    $this->db->limit(5);
    $this->db->from('sites');
    $this->db->join('people', 'sites.clientid = people.id');
    $this->db->orderby("name", "desc");
    $query = $this->db->get();
    方法二:
    $this->db->query("SELECT id, name, url FROM sites WHERE 'type' = 'dynamic'");
    可以像下面的语句一样写查询放条件
    $condition = "client ='3' AND (type ='dynamic' OR type='static')";
    $this->db->where($condition);
    注意:双引号是定义变量的.不要混淆单引号和双引号.


    显示查询结果
    在查询语句后加上下面这句话
    $query = $this->db->get();
    如果有多个结果,他们被保存在$row对象中,可以用一个 foreach 循环:
    foreach ($query->result() as $row)
    {
       print $row->url;
       print $row->name;
       print $row->client;
    }
    如果我们只想要一个结果,它可以作为一个对象被返回, 或在这里当做一个$row数组
    if ($query->num_rows() > 0)
    {
       $row = $query->row_array();
     
       print $row['url'];
       print $row['name'];
       print $row['client'];
    }


    增加数据(等同insert)
    方法一:先建个数组,把要insert的值放在数组里.如下:其中url/name/clientid/type均为数据表属性值
    $data = array(
                    'url' => 'www.mynewclient.com',
                    'name' => 'BigCo Inc',
                    'clientid' => '33',
                    'type' => 'dynamic'
                );
    然后使用$this->db->insert('sites', $data); 把数据增加到sites表中.
    方法二:使用$this->db->set() 设置每一个值
    $this->db->set('url', 'www.mynewclinet.com');
    $this->db->set('name', 'BigCo Inc');
    $this->db->set('clientid', '33');
    $this->db->set('type', 'dynamic');
    $this->db->insert('sites');


    更新(等同update)
    先定位要更新的记录,再update
    $this->db->where('id', '1');
    $this->db->update('sites', $data);
    $this->db->set()方式也可以,和新增数据应该是一样的.

     

    CI 提供几个函数检查数据库是否成功执行了相关操作。 最有用的:
    $this->db->affected_rows();
    在执行insert或update后应该返回 '1'-但是如果我正在update一批记录的话,可能返回更大的一个整数。


    如果我正在insert一笔新的记录, 在实际产生它之前,我们并不知道ID具体的值。如果我需要引用新的记录的ID, 使用下列语句:
    $new_id_number = $this->db->insert_id();


    删除(等同delete)
    $this->db->where('id', '2');
    $this->db->delete('sites');


    CI中使用多个数据库

     第一步:创建数据库
           现在假设我要操作的两个数据库分别为我本机MySQL数据库中的test数据库和test_other数据库。
           test数据库中有一个t_news表(新闻表);
           其SQL语句如下:
          

    SQL 复制代码
     
    CREATE  DATABASE  /*!32312 IF NOT EXISTS*/ `test`  /*!40100 DEFAULT CHARACTER SET utf8 */;
    USE  `test`;
    /*Table structure for table `t_news` */
    DROP  TABLE  IF  EXISTS  `t_news`;
    CREATE  TABLE  `t_news`  (
       `id`  INT ( 11 )  NOT  NULL  AUTO_INCREMENT COMMENT  '新闻ID' ,
       `title`  CHAR ( 255 )  NOT  NULL COMMENT  '新闻标题' ,
       `sub_title`  VARCHAR ( 500 )  DEFAULT  NULL COMMENT  '新闻副标题' ,
       `content` TEXT COMMENT  '新闻内容' ,
       `create_time` DATETIME  DEFAULT  NULL COMMENT  '创建时间' ,
       `hits`  INT ( 11 )  DEFAULT  NULL COMMENT  '点击率' ,
       `author`  CHAR ( 50 )  DEFAULT  NULL COMMENT  '作者' ,
       `source`  CHAR ( 255 )  DEFAULT  NULL COMMENT  '信息来源' ,
       PRIMARY  KEY  ( `id` )
    ) ENGINE =INNODB  AUTO_INCREMENT = 0  DEFAULT CHARSET =utf8 CHECKSUM = 1 DELAY_KEY_WRITE = 1ROW_FORMAT =DYNAMIC COMMENT = '新闻表';
    复制代码

           test_other数据库中有一个t_sys_user(系统管理员表);
           其SQL语句如下:
          
    SQL 复制代码
     
    CREATE  DATABASE  /*!32312 IF NOT EXISTS*/ `test_other`  /*!40100 DEFAULT CHARACTER SET utf8 */;
    USE  `test_other`;
    /*Table structure for table `t_sys_user` */
    DROP  TABLE  IF  EXISTS  `t_sys_user`;
    CREATE  TABLE  `t_sys_user`  (
       `id`  INT ( 11 )  NOT  NULL COMMENT  '管理员ID' ,
       `role_id`  INT ( 11 )  NOT  NULL COMMENT  '角色ID' ,
       `login_name`  VARCHAR ( 50 )  NOT  NULL COMMENT  '用户名称' ,
       `password`  VARCHAR ( 255 )  NOT  NULL COMMENT  '密码' ,
       `is_admin` TINYINT ( 1 )  NOT  NULL  DEFAULT  '0' COMMENT  '是否为管理员(0:否 1:是)' ,
       `create_time` DATETIME  DEFAULT  NULL COMMENT  '创建时间' ,
       `last_login` DATETIME  DEFAULT  NULL COMMENT  '上次登录时间' ,
       `login_num`  INT ( 11 )  DEFAULT  '0' COMMENT  '登录次数' ,
       `last_ip`  CHAR ( 15 )  DEFAULT  NULL COMMENT  '上次登录IP' ,
       `status` TINYINT ( 1 )  NOT  NULL  DEFAULT  '0' COMMENT  '登录状态(0:未登录 1:已登录)' ,
       `is_locked` TINYINT ( 1 )  NOT  NULL  DEFAULT  '0' COMMENT  '是否被锁定(0:否 1:是 注:锁定时不允许登录)' ,
       PRIMARY  KEY  ( `id` )
    ) ENGINE =INNODB  DEFAULT CHARSET =utf8 CHECKSUM = 1 DELAY_KEY_WRITE = 1 ROW_FORMAT =DYNAMIC COMMENT = '系统管理员表';
    复制代码
           第二步:修改数据库配置信息
           打开./application/config/目录中的 database.php 文件,在原来的内容中增加另外一个数据库配置信息。文件内容如下:
          
    PHP 复制代码
     
    <?php   if  (  !  defined ( 'BASEPATH' ) )   exit ( 'No direct script access allowed' ) ;
    /*
    | -------------------------------------------------------------------
    | DATABASE CONNECTIVITY SETTINGS
    | -------------------------------------------------------------------
    | This file will contain the settings needed to access your database.
    |
    | For complete instructions please consult the 'Database Connection'
    | page of the User Guide.
    |
    | -------------------------------------------------------------------
    | EXPLANATION OF VARIABLES
    | -------------------------------------------------------------------
    */

     
    $active_group  =  'default' ;
    $active_record  =  TRUE ;
     
    $db [ 'default' ] [ 'hostname' ]  =  'localhost' ;
    $db [ 'default' ] [ 'username' ]  =  'root' ;
    $db [ 'default' ] [ 'password' ]  =  '111111' ;
    $db [ 'default' ] [ 'database' ]  =  'test' ;
    $db [ 'default' ] [ 'dbdriver' ]  =  'mysql' ;
    $db [ 'default' ] [ 'dbprefix' ]  =  '' ;
    $db [ 'default' ] [ 'pconnect' ]  =  FALSE ;
    $db [ 'default' ] [ 'db_debug' ]  =  TRUE ;
    $db [ 'default' ] [ 'cache_on' ]  =  FALSE ;
    $db [ 'default' ] [ 'cachedir' ]  =  '' ;
    $db [ 'default' ] [ 'char_set' ]  =  'utf8' ;
    $db [ 'default' ] [ 'dbcollat' ]  =  'utf8_general_ci' ;
    $db [ 'default' ] [ 'swap_pre' ]  =  '' ;
    $db [ 'default' ] [ 'autoinit' ]  =  TRUE ;
    $db [ 'default' ] [ 'stricton' ]  =  FALSE ;
     
    //Additional database
    $db [ 'additional' ] [ 'hostname' ]  =  'localhost' ;
    $db [ 'additional' ] [ 'username' ]  =  'root' ;
    $db [ 'additional' ] [ 'password' ]  =  '111111' ;
    $db [ 'additional' ] [ 'database' ]  =  'test_other' ;
    $db [ 'additional' ] [ 'dbdriver' ]  =  'mysql' ;
    $db [ 'additional' ] [ 'dbprefix' ]  =  '' ;
    $db [ 'additional' ] [ 'pconnect' ]  =  FALSE ;
    $db [ 'additional' ] [ 'db_debug' ]  =  TRUE ;
    $db [ 'additional' ] [ 'cache_on' ]  =  FALSE ;
    $db [ 'additional' ] [ 'cachedir' ]  =  '' ;
    $db [ 'additional' ] [ 'char_set' ]  =  'utf8' ;
    $db [ 'additional' ] [ 'dbcollat' ]  =  'utf8_general_ci' ;
    $db [ 'additional' ] [ 'swap_pre' ]  =  '' ;
    $db [ 'additional' ] [ 'autoinit' ]  =  TRUE ;
    $db [ 'additional' ] [ 'stricton' ]  =  FALSE ;
     
    /* End of file database.php */
    /* Location: ./application/config/database.php */
    复制代码


           第三步:编写控制器
           在./application/controllers/目录下创建名为 dbc.php 的控制器文件,其内容如下:
          
    PHP 复制代码
     
    <?php  if  (  !  defined ( 'BASEPATH' ) )   exit ( 'No direct script access allowed' ) ;
    /**
     * @package                CI2.1.0
     * @author                  Longde
     * @version                 1.0
     */

     
    // ------------------------------------------------------------------------
    header ( 'Content-Type:text/html; charset=utf-8' ) ;
    /**
     * 数据库控制器
     * 该控制器的主要做用是进行数据库方面的操作。
     * 
     * @category        Controllers
     * @author                Longde
     */

    class  Dbc  extends CI_Controller  {
            
             /**
             * 测试在同一个项目中同时使用多个数据库进行操作
             * @access        public
             * @return        array
             */

             public  function index ( )
             {
                     //按照CI手册中的说法:如果需要同时连接多个数据库,则采用
                     //$DB1 = $this->load->database('group_one',TRUE);
                     //$DB2 = $this->load->database('group_two',TRUE);
                     //注意:confing/database.php中的$db[xxxx]['pconnect'] = FALSE
                     $db1  =  $this -> load -> database ( 'default' , TRUE ) ; //注意第一个参数:值与配置文件中的第一个索引对应
                     $db2  =  $this -> load -> database ( 'additional' ,  TRUE ) ; //注意第一个参数:值与配置文件中的第一个索引对应
                    
                     //下面开始进行操作
                     //首先,在第一个数据库test的t_news表中插入数据
                     $data1  =  array (
                             'title'                         =>  '测试在CI框架中同时操作多个数据库' ,
                             'sub_title'                  =>  'CI框架允许使用多个数据库进行操作。具体的内容请查看CI手册......' ,
                             'content'                   =>  '如果你需要同时连接多于一个的数据库,你可以用以下方式来实现:$DB1 = $this->load->database(\'group_one\', TRUE);$DB2 = $this->load->database(\'group_two\', TRUE);注意:改变 "group_one" 和 "group_two" 为你指定了连接属性的组名 (或者通过上边说过的连接数组的数组名)。' ,
                             'create_time'             =>  date ( 'Y-m-d H:i:s' ) ,
                             'author'                     =>  'Longde' ,
                             'source'                     =>  '原创'
                     ) ;
                     //插入之前先判断是否已存在
                     $db1 -> select ( 'id' ) ;
                     $id1  =  $db1 -> get_where ( 't_news' , array ( 'title'   =>  $data1 [ 'title' ] ) ) -> result_array ( ) ;
                     if ( empty ( $id1 ) )
                     {
                             //插入数据
                             $db1 -> insert ( 't_news' , $data1 ) ;
                             //获取刚才插入数据时生成的ID值
                             $id1  =  $db1 -> insert_id ( ) ;
                     }
                     else
                     {
                             $id1  =  $id1 [ 0 ] [ 'id' ] ;
                     }
                     //从数据库中读取数据
                     $result1  =  $db1 -> get_where ( 't_news' , array ( 'id'   =>  $id1 ) ) -> result_array ( ) ;
                     //格式化输出刚才的读取结果
                     echo  "<pre>" ;
                     print_r ( $result1 ) ;
                    
                     //其次,在第二个数据库test_other的t_sys_user表中插入数据
                     $data2  =  array (
                             'role_id'                      =>  1 ,
                             'login_name'              =>  'admin' ,
                             'password'                 =>  md5 ( 'admin' ) ,
                             'is_admin'                   =>  1 ,
                             'create_time'              =>  date ( 'Y-m-d H:i:s' ) ,
                             'status'                       =>  0 ,
                             'is_locked'                  =>  0
                     ) ;
                     //插入之前先判断是否已存在
                     $db2 -> select ( 'id' ) ;
                     $id2  =  $db2 -> get_where ( 't_sys_user' , array ( 'login_name'   =>  $data2 [ 'login_name' ] ) ) -> result_array ( ) ;
                     if ( empty ( $id2 ) )
                     {
                             //插入数据
                             $db2 -> insert ( 't_sys_user' , $data2 ) ;
                             //获取刚才插入数据时生成的ID值
                             $id2  =  $db2 -> insert_id ( ) ;
                     }
                     else
                     {
                             $id2  =  $id2 [ 0 ] [ 'id' ] ;
                     }
                     //从数据库中读取刚才插入的数据
                     $result2  =  $db2 -> get_where ( 't_sys_user' , array ( 'id'   =>  $id2 ) ) -> result_array ( ) ;
                     //格式化输出刚才的读取结果
                     echo  "<pre>" ;
                     print_r ( $result2 ) ;
             }
            
             // ------------------------------------------------------------------------
    }
     
    /* End of file dbc.php */
    /* Location: ./application/controllers/dbc.php */
    复制代码


           说明一下,dbc.php文件中的index()方法主要是对两个数据库分别进行了插入操作,但在插入操作之前,先对该条记录是否存在进行了判断,如果存在则不进行插入操作并直接查询出结果;否则先进行插入,然后再查询。
           值得注意的是,数据库配置文件database.php文件中的$db['group_name']['pconnect']值需要设置为 FALSE ,其次$db[' group_name ']中的索引group_name对应的就是“$DB1 = $this->load->database(' group_name ',TRUE)”;

     如果文件保存完成后,通过站点访问即可看到查询出来的数据则说明多个数据库操作实现成功。

    展开全文
  • JAVA 使用数据库连接连接Oracle数据库,全代码,附加详细说明
  • idea数据库管理工具配置连接数据库

    万次阅读 2018-08-07 10:57:13
    idea数据库管理工具配置连接数据库 —————————————————————————————————————————————————————— 在cmd中操作数据库太麻烦了,还好idea为我们提供了很方便的...

    idea数据库管理工具配置连接数据库

    ——————————————————————————————————————————————————————

    在cmd中操作数据库太麻烦了,还好idea为我们提供了很方便的数据库管理工具,下面看看如何用idea连接配置数据库。
    分两种情况:一.单纯连接mysql,不连接数据库(或电脑中还未创建任何数据库数据表)。二.直接连接数据表(已经创建有要连接的数据库及数据表)。
    ——————————————————————————————————————————————————————

    一.单纯连接mysql,不连接数据库(或电脑中还未创建任何数据库数据表)。

    1.点击View–>Tool Windows–Database。
    这里写图片描述
    2.点击“+”–>Data Source–>MySql。
    这里写图片描述
    3.第一次用的话,左侧Driver那里好像是红色的,要下载什么东西,记不清了,好像瞎点就行了,第一次用Driver那里没有MySql的同学如果遇到问题了自行百度吧 (/▽\)。呃,继续。在弹出的窗口中,把右侧default改成URL only,输入用户名、密码。可以点击Test Connect测试连接是否成功。OK连接完成!(如果还遇到问题百度去,(っ´Ι`)っ) )。
    这里写图片描述
    4.刚才只是连接了MySql,并没有连接到具体某个数据库,现在你可以在idea中创建数据库、数据表。
    右键刚才的连接,new–>schema。
    这里写图片描述
    5.输入schema名称,其实这个就是数据库名称了,在cmd用show databases;命令的的话,会显示你填的这个schema名称。我创建的数据库叫“cTest”,大小写随意,MySQL中默认是不区分大小写的。
    这里写图片描述
    6.右键cTest数据库,new–>Table,可以创建一个新的数据表。尝试创建一张数据表吧~~我创建了一张名为students的数据表,id是主键,int类型。name 为varchar(20)。然后可以在idea中进行增加删除数据等操作。
    这里写图片描述
    这里写图片描述
    这里写图片描述
    7.到此,数据库数据表就创建完成了,我们可以在cmd中找到刚才的数据库数据表。idea操作数据库的更多方法大家自己去尝试吧~(给新学的同学说明一下,这是idea连接数据库,并不代表你的工程项目连接了数据库。idea连接数据库只是代替了cmd,让你更方便的操作MySQL,就好比你用第三方浏览器替代了ie浏览器,可以把cmd和idea都看作数据库浏览器)
    这里写图片描述
    ——————————————————————————————————————————————————————

    二.直接连接数据表(已经创建有要连接的数据库及数据表)。

    1.在 (一) 中的第3步,选择default,填写一个已经存在的!!重点!要已经存在的数据库的名称(这个数据库可以是你在cmd里创建过的,也可以是你之前在idea中创建过的,随意~)。比如我们已经创建过了cTest,就可以连接cTest,填名称和用户名密码就好了,其他会自动填,当然你也可以把最上面的name改成你喜欢的。
    这里写图片描述
    OK!之后操作窗口里就有cTest了~
    这里写图片描述

    ——————————————————————————————————————————————————————
    好啦,写完啦~,下一篇写写java连接数据库的源代码吧~
    没人陪我打lol,放假突然兴起乱写一下打发时间

    展开全文
  • 连接数据库ThinkPHP内置了抽象数据库访问层,把不同的数据库操作封装起来,我们只需要使用公共的Db类进行操作,而无需针对不同的数据库写不同的代码和底层实现,Db类会自动调用相应的数据库驱动来处理。目前的数据库...

    连接数据库

    ThinkPHP内置了抽象数据库访问层,把不同的数据库操作封装起来,我们只需要使用公共的Db类进行操作,而无需针对不同的数据库写不同的代码和底层实现,Db类会自动调用相应的数据库驱动来处理。目前的数据库包括Mysql、SqlServer、PgSQL、Sqlite、Oracle、Ibase、Mongo,也包括对PDO的支持。


    如果应用需要使用数据库,必须配置数据库连接信息,数据库的配置文件有多种定义方式。

    一、全局配置定义
    常用的配置方式是在应用配置文件或者模块配置文件中添加下面的配置参数:
    
    
    1. //数据库配置信息'DB_TYPE' => 'mysql', // 数据库类型
    2. 'DB_HOST' => 'localhost', // 服务器地址
    3. 'DB_NAME' => 'thinkphp', // 数据库名
    4. 'DB_USER' => 'root', // 用户名
    5. 'DB_PWD' => '123456', // 密码
    6. 'DB_PORT' => 3306, // 端口
    7. 'DB_PREFIX' => 'think_', // 数据库表前缀
    8. 'DB_CHARSET'=> 'utf8', // 字符集
    9. 数据库的类型由DB_TYPE参数设置。

    下面是目前支持的数据库设置: 


    如果DB_TYPE使用PDO类型的话,数据库类型则由DB_DSN配置决定。

    或者采用如下配置
    'DB_DSN' => 'mysql://root:123456@localhost:3306/thinkphp#utf8'
    使用DB_DSN方式定义可以简化配置参数,DSN参数格式为:

    数据库类型://用户名:密码@数据库地址:数据库端口/数据库名#字符集
    字符集设置需要3.2.1版本以上有效,字符集如果没有设置的话,默认为utf8。

    如果两种配置参数同时存在的话,DB_DSN配置参数优先。

    注意:如果要设置分布式数据库,暂时不支持DB_DSN方式配置。


    如果采用PDO驱动的话,则必须首先配置**DB_TYPE **为pdo,然后还需要单独配置其他参数,例如:


    
    
    1. //PDO连接方式
    2. 'DB_TYPE' => 'pdo', // 数据库类型
    3. 'DB_USER' => 'root', // 用户名
    4. 'DB_PWD' => '', // 密码
    5. 'DB_PREFIX' => 'think_', // 数据库表前缀
    6. 'DB_DSN' => 'mysql:host=localhost;dbname=thinkphp;charset=UTF-8'

    注意:PDO方式的DB_DSN配置格式有所区别,根据不同的数据库类型设置有所不同,具体可以参考PHP手册。


    配置文件定义的数据库连接信息一般是系统默认采用的,因为一般一个应用的数据库访问配置是相同的。该方法系统在连接数据库的时候会自动获取,无需手动连接。

    可以对每个模块定义不同的数据库连接信息,如果开启了调试模式的话,还可以在不同的应用状态的配置文件里面定义独立的数据库配置信息。

    二、模型类定义
    如果在某个模型类里面定义了connection属性的话,则实例化该自定义模型的时候会采用定义的数据库连接信息,而不是配置文件中设置的默认连接信息,通常用于某些数据表位于当前数据库连接之外的其它数据库,例如:
    
    
    1. //在模型里单独设置数据库连接信息
    2. namespace Home\ Model;
    3. use Think\ Model;
    4. class UserModel extends Model{
    5. protected $connection = array(
    6. 'db_type' => 'mysql',
    7. 'db_user' => 'root',
    8. 'db_pwd' => '1234',
    9. 'db_host' => 'localhost',
    10. 'db_port' => '3306',
    11. 'db_name' => 'thinkphp',
    12. 'db_charset' => 'utf8',
    13. );
    14. }

     也可以采用DSN方式定义,例如:
    
    
    1. //在模型里单独设置数据库连接信息
    2. namespace Home\ Model;
    3. use Think\ Model;
    4. class UserModel extends Model{
    5. //或者使用DSN定义
    6. protected $connection = 'mysql://root:1234@localhost:3306/thinkphp#utf8';
    7. }
     

     如果我们已经在配置文件中配置了额外的数据库连接信息,例如:


    
    
    1. //数据库配置1
    2. 'DB_CONFIG1' => array(
    3. 'db_type' => 'mysql',
    4. 'db_user' => 'root',
    5. 'db_pwd' => '1234',
    6. 'db_host' => 'localhost',
    7. 'db_port' => '3306',
    8. 'db_name' => 'thinkphp',
    9. 'db_charset'=> 'utf8',
    10. ),
    11. //数据库配置2
    12. 'DB_CONFIG2' => 'mysql://root:1234@localhost:3306/thinkphp#utf8';

     那么,我们可以把模型类的属性定义改为:

    //在模型里单独设置数据库连接信息

    
    
    1. namespace Home\ Model;
    2. use Think\ Model;
    3. class UserModel extends Model{
    4. //调用配置文件中的数据库配置1
    5. protected $connection = 'DB_CONFIG1';
    6. }
    7. //在模型里单独设置数据库连接信息
    8. namespace Home\ Model;
    9. use Think\ Model;
    10. class InfoModel extends Model{
    11. //调用配置文件中的数据库配置1
    12. protected $connection = 'DB_CONFIG2';
    13. }

    三、实例化定义

    除了在模型定义的时候指定数据库连接信息外,我们还可以在实例化的时候指定数据库连接信息,例如:如果采用的是M方法实例化模型的话,也可以支持传入不同的数据库连接信息,例如:

    $User = M('User','other_','mysql://root:1234@localhost/demo#utf8'); 

    表示实例化User模型,连接的是demo数据库的other_user表,采用的连接信息是第三个参数配置的。如果我们在项目配置文件中已经配置了DB_CONFIG2的话,也可以采用:

    $User = M('User','other_','DB_CONFIG2');

      需要注意的是,ThinkPHP的数据库连接的惰性的,所以并不是在实例化的时候就连接数据库,而是在有实际的数据操作的时候才会去连接数据库(额外的情况是,在系统第一次实例化模型的时候,会自动连接数据库获取相关模型类对应的数据表的字段信息)。
    展开全文
  • 2.配置XML,放在SRC目录下 <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1

    1.先将上面4个包放到lib文件夹下面

    2.配置XML,放在SRC目录下

     

     

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE generatorConfiguration
      PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
      "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
     <generatorConfiguration>
      
      <!-- 配置ORACLE 驱动jar包路径.用了相对路径 -->
      <classPathEntry location="WebRoot/WEB-INF/lib/ojdbc7.jar" />
    
      <context id="yihaomen_mysql_tables" targetRuntime="MyBatis3">
      
        <!-- 为了防止生成的代码中有很多注释,比较难看,加入下面的配置控制 -->
        <commentGenerator>
          <property name="suppressAllComments" value="true" />
          <property name="suppressDate" value="true" />
        </commentGenerator>
        <!-- 注释控制完毕 -->
      
        <!-- 数据库连接, -->
        <jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver"
            connectionURL="jdbc:oracle:thin:@152.19.5.181:1521/gldbpdb1"
            userId="Mybatis"
            password="mylove">
        </jdbcConnection>
    
        <javaTypeResolver >
          <property name="forceBigDecimals" value="false" />
        </javaTypeResolver>
        
        <!-- 数据表对应的model 层 ,targetProject为自动生成后文件所放路径 -->
        <javaModelGenerator targetPackage="src.Model" targetProject="src">
          <property name="enableSubPackages" value="false" />
          <property name="trimStrings" value="true" />
        </javaModelGenerator>
        
        <!-- sql mapper 隐射配置文件 -->
        <sqlMapGenerator targetPackage="src.Map"  targetProject="src">
          <property name="enableSubPackages" value="false" />
        </sqlMapGenerator>
        
        <!-- 在ibatis2 中是dao层,但在mybatis3中,其实就是mapper接口 -->
        <javaClientGenerator type="XMLMAPPER" targetPackage="src.Client"  targetProject="src">
          <property name="enableSubPackages" value="false" />
        </javaClientGenerator>
        
        <!-- 要对那些数据表进行生成操作,必须要有一个. -->
        <table schema="mybatis" tableName="category" domainObjectName="Category" 
            enableCountByExample="false" enableUpdateByExample="false"
            enableDeleteByExample="false" enableSelectByExample="false"
            selectByExampleQueryId="false">     
        </table>
    
      </context>
    </generatorConfiguration>


    3.编写执行代码

     

     

    package com.yihaomen.test;
    
    import java.io.File;
    import java.io.IOException;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.List;
    
    import org.mybatis.generator.api.MyBatisGenerator;
    import org.mybatis.generator.config.Configuration;
    import org.mybatis.generator.config.xml.ConfigurationParser;
    import org.mybatis.generator.exception.InvalidConfigurationException;
    import org.mybatis.generator.exception.XMLParserException;
    import org.mybatis.generator.internal.DefaultShellCallback;
    
    public class GenMain {
    	public static void main(String[] args) {
    		List<String> warnings = new ArrayList<String>();
    		boolean overwrite = true;
    		String genCfg = "/mbgConfiguration.xml";
    		File configFile = new File(GenMain.class.getResource(genCfg).getFile());
    		ConfigurationParser cp = new ConfigurationParser(warnings);
    		Configuration config = null;
    		try {
    			config = cp.parseConfiguration(configFile);
    		} catch (IOException e) {
    			e.printStackTrace();
    		} catch (XMLParserException e) {
    			e.printStackTrace();
    		}
    		DefaultShellCallback callback = new DefaultShellCallback(overwrite);
    		MyBatisGenerator myBatisGenerator = null;
    		try {
    			myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
    		} catch (InvalidConfigurationException e) {
    			e.printStackTrace();
    		}
    		try {
    			myBatisGenerator.generate(null);
    		} catch (SQLException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		} catch (InterruptedException e) {
    			e.printStackTrace();
    		}
    	}
    }
    

    4.执行Main方法即可自动生成所需要的文件
     

     

     

    展开全文
  • 2019创建mvc自动生成代码比2017简单多了, 1、 新建项目“eco”,选择“web应用程序(模型视图控制器)”,身份验证为:不进行身份验证。 2、 在【程序包管理控制台】执行命令: Scaffold-DbContext ...
  •   在验证通过Jenkins实现自动化部署的过程中,遇见了一个问题:从Git开发分支合并到测试分支的代码中,数据库连接配置还是使用的开发环境数据库,但是如果通过自动化部署,实现从测试分支直接自动化部署测试环境时...
  • Django配置连接数据库

    千次阅读 2019-03-27 16:29:56
    在 settings.py 文件中进行配置 首先需要在 DATABASES 中进行配置代码如下: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': '[database_name]', 'USER': '[username]', ...
  • hibernate自动重新连接数据库

    千次阅读 2010-05-11 10:21:00
    现在遇到这样情况,tomcat应用(持久层是hibernate)...有何办法能让hibernate在知道连接失败以后自动重新连接数据库。在网上查了很多资料都没有办法很好的解决,最后更换了连接池,使用proxool具体配置可以看别一篇文
  • Mybatis多个数据库连接配置

    千次阅读 2019-02-28 18:36:21
    app.properties配置文件中的两个数据库连接信息 2 mybatis配置文件读取app.properties中的连接信息 &amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt; &...
  • 以前写过一篇教程,Springboot AOP...网上大多流传的springboot系列的切换多数据源都是以上那种写死在配置文件里的方式,这样如果我需要切换的数据源有10个,那么这种方式会不会显得稍微有点繁琐了。 现在这篇介绍...
  • 1.SpringBoot的数据库连接池的相关默认 springBoot之前的版本默认使用的是Tomcat的数据库连接池 ...2.springBoot默认的数据库连接池,以及自动装配原理 这部分可以通过查看数据库自动装配类:org.sp...
  • JDBC连接Sqlserver数据库配置与教程(零基础)

    万次阅读 多人点赞 2018-10-08 00:25:20
    首先非常感谢网上的那些大佬,我百度了一晚上看了好多博客才连接成功。毕竟正确的答案只有一个,出现的问题却各有不同,所以看起来特别浪费时间。现在我趁热打铁连接方式说一下,应该包含了...java代码连接 一...
  • Druid简介 ...Druid是一个JDBC组件库,包括数据库连接池、SQL Parser等组件。 Maven dependency> groupId>com.alibabagroupId> artifactId>druidartifactId> version>1.0.29version> dependency>
  • Z平台-多数据库连接配置

    千次阅读 2019-12-18 10:04:36
    返回帮助文档首页 在某些管理系统的业务场景中,需要...2.填写数据库连接信息并保存 数据库标识:写入英文加数字字符串,不可重复。 数据库名称:数据库中文的描述名称 数据库类型:根据要连接数据库类型进...
  • maven配置连接MySQL数据库

    万次阅读 2019-07-09 11:21:34
    2019年7月9号问题:maven项目中连接不上mysql数据库 问题:maven项目中连接不上mysql数据库 ...我maven项目中pom.xml中配置mysql-connection-java的版本是5.1.38的,而我电脑上的mysql数据库的版本是8.0的。...
  • Web配置文件链接字符串的两种使用方式 一 本地数据库 ... 节是对连接数据库的字符串进行配置,由于MS SQL Server与ASP.NET同属于微软的产品,因此是使用ASP.NET开发时首选的数据库是MS SQL Server,本文
  • 好长时间没有写博客了,最近公司要用java语言,开始学习java,属于初学者,今天主要记录一下mybatis generator自动生成代码,首先在如下图的目录中新建两个文件,如下图 具体generatorConfig.xml内容如下: ...
  • VS连接SQL Server数据库(C#代码

    千次阅读 2020-04-07 21:00:53
    工具: 1.Visual Studio (我使用的是vs2013) ...2.复制上图中的“服务器名称”,然后点击“连接”,进入数据库。 3.打开vs,创建好自己要用的项目,我写的项目名称叫做:‘RestaurantSystem’ 4.工具->...
  • C#开发学习笔记:利用XML配置文件连接数据库
  • 前面配置章节我们已经使用gorm对我们设计的mysql数据库进行了连接。这一节我们再讲讲怎么配置gorm。 gorm支持多种数据库连接,目前官方列出来的支持库有:MySQL, PostgreSQL, SQLite, SQL Server 四种数据库连接。在...
  • 数据库连接配置引发的危机 车祸现场: xxx系统由于业务需求,所要部署的定时任务变的越来越多,于是决定利用Quartz框架来做一个任务调度管理模块(采用集群模式,并持久化任务调度信息,数据保存于mysql5.6)。 ...
  • 配置tomcat数据库连接池及使用数据库连接池(hibernate数据源配置和使用) 数据库连接池就是一个装有很多个数据库连接的东西,配置包括3步:1.让tomcat容器启动创建数据库连接池2.在某个项目中关联数据库连接池,3....
  • Springboot 禁用数据库自动配置

    万次阅读 2018-06-28 17:29:28
    如果我们用SpringBoot实现一个简单的微服务,不需要数据库,你会发现在写完代码启动时会报org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'spring.datasource-org.spring...
  • 数据库连接池----Druid配置详解

    千次阅读 2017-07-27 13:44:18
    数据库连接池出现的原因在数据库连接资源的低效管理,使用数据库连接池是基于设计模式中的资源池的概念,从而解决资源频繁是分配、释放所造成的问题。 数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。...
  • C++ 连接数据库

    万次阅读 2012-11-23 16:09:00
    主流数据库  当前各种主流数据库,  Oracle, MS SQL Server, MySQL, DB2, MS ACCESS, Sybase, Informix, Interbase / Firebird, PostgreSQL, SQLite, SAP/DB, TimesTen等等。... 连接数据库大致分如下四个步骤:
  • IntelliJ IDEA与数据库连接 一、配置数据源 1.点击右侧Database选项卡 2.点击【+】号,选择对应数据库 3.配置数据源 Database :数据库名  User 和 Password 为数据库账户密码。  点击...
  • 两种数据库连接实现方式 第一种方式:DBCP DBCP使用流程 导jar包使用DBCP创建数据库连接对象使用DataSource,调用连接池对象的getConnection方法 编写的.properties文件:dbcpconfig.properties #连接设置 ...
  • 获得Web应用配置参数(连接数据库)

    千次阅读 2018-03-16 16:25:53
    appclication其中的一个重要用处:可用于获得web应用的配置参数。如访问数据库,但访问数据库所使用的驱动,URL,用户名及密码都在web.xml中给出. 通过使用application的getInitParameter(String paramName)来获取...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 353,887
精华内容 141,554
关键字:

自动连接数据库的配置信息代码