
PHP SQLite 的使用和配置方法:
在PHP 5.1.x 以后自带了 SQLtie 数据库功能,只需要在配置PHP.ini中开启即可
extension=php_sqlite.dll
在PHP 5.2.x 以后自带了 SQLtie PDO数据库功能,只需要在配置PHP.ini中开启即可
extension=php_pdo_sqlite.dll
SQLite 数据库管理:
1、SQLiteManager与PHPmyadmin不同,需要添加管理的数据库
2、Windows下使用添加路径需要将 X: \**\** 改为 X:/**/**
3、 创建数据库的时候需要指定SQLite 数据库文件存放的路径
再说 *** 作:
<?php
$db_path = 'sqlite3_db_php'
$db = new SQLite3($db_path)//这就是创建数据库,也是连接数据库
if (!!$db) {
//下面创建一个表格
$db->exec('CREATE TABLE user (id integer primary key, name varchar(32), psw varchar(32))')
php中 *** 作sqlite3数据库的类文件。一般用法:
$filepath="/apps/www/htdocs/databasename"
$db=new SPSQLite3($filepath)//打开此路径数据库文件
$sql="select * from tablename"//查询记录
$sql2="delete from tablename"//删除表内所有记录
$db->exec_sql($sql)//执行查询语句
$db->struct_sql($sql2)//执行删除
$result=$db->get_all_data()//返回 *** 作记录集合
$numbers=count($result)//得到有效记录数
$fields=$result[0]["field"]//取字段内容
$db->close()//关闭
?>
需要在装入的头文件中加入:@dl('sqlite3.so')调用动态链接库(linux中)
[@more@]
class SPSQLite3
{
var $db_name//连接的sqlite数据库服务器的用户密码
var $db_link//数据库连接的句柄
var $result//执行sqlite语句的资源句柄
var $insert_autoid = 0//增加记录时自动编号的最后一个ID号
var $get_data = array()//获取记录内容
var $get_all_data = array()//获取所有记录内容
var $num_rows = 0//执行SELECT语句时获取了多少条记录
var $affected_rows = 0//执行除SELECT语句所影响的记录行数
var $error = ""
function SPSQLite3($db_name = "sqlite")
{
$this->db_name = $db_name
$this->open_db($db_name)//打开数据库
}
//构造函数
function __destruct()
{
$this->free()
$this->close()
}
//释放查询值
function free()
{
if ($this->result)
{
unset($this->result)
}
}
//关闭数据库连接
function close()
{
if ($this->db_link)
{
$this->free()
return @sqlite3_close($this->db_link)
}
}
//严重错误时停执行
function halt($msg)
{
$this->free()
$this->close()
//调试函数
print("
程序遇到一个严重而至命的错误,以至停止执行!
错误描述:{$msg}
")
exit(1)
}
//打开数据连接,并选择数据库
function open_db($db_name = "sqlite")
{
if ($db_name == "")
{
$db_name = $this->db_name
}
if ($db_name == "")
{
$this->halt("未能找到指定要 *** 作的数据库名:{$db_name}!")
}
$this->db_link = @sqlite3_open($db_name) or die ("数据库连接失败")
if ($this->db_link)
{
return $this->db_link
}else{
$this->halt("您所要 *** 作的文件不能写,权限不足!")
}
}
//返回sqlite连接句柄
function db_link()
{
return $this->db_link
}
//执行对数据查询 *** 作的SQL语句
function exec_sql($sql_cmd)
{
$this->result = @sqlite3_query($this->db_link, $sql_cmd)
return $this->result
}
//执对数据库 *** 作(create,update,delete,insert)的SQL语句
function struct_sql($sql_cmd)
{
$this->result = @sqlite3_exec($this->db_link, $sql_cmd)
return $this->result
}
//获取所有数据内容存入数组中
function get_data()
{
if (!$this->result)
{
//$this->halt("没有记录可获取!")
return false
}
$this->get_data = @sqlite3_fetch_array($this->result)
if (!is_array($this->get_data))
{
$this->get_data = null
}
return $this->get_data
}
//获取所有数据内容存入数组中
function get_all_data()
{
if (!$this->result)
{
//$this->halt("没有记录可获取!")
return false
}
$this->get_all_data = array()
while ($row = @sqlite3_fetch_array($this->result))
{
$this->get_all_data[] = $row
}
return $this->get_all_data
}
//记录 *** 作返回数
function num_rows()
{
if (!$this->result)
{
//$this->halt("没有记录可获取!")
return false
}
//禁用num_rows函数..
//$this->num_rows = sqlite3_changes($this->result)
$this->num_rows = 0
return $this->num_rows
}
//seek函数
function seek($nu)
{
if (!$this->result)
{
//$this->halt("没有记录可获取!")
return false
}
$seek_result = @sqlite_seek(!$this->result, $nu)
if ($seek_result)
{
return $seek_result
}else{
$this->halt("数据记录移动范围超出了记录!")
}
}
//获取最后增加记录的自动编号
function insert_autoid()
{
$this->insert_autoid = @sqlite3_last_insert_rowid($this->db_link)
return $this->insert_autoid
}
//执行除SELECT语句所影响的记录行数
function affected_rows()
{
$this->affected_rows = sqlite3_changes($this->db_link)
return $this->affected_rows
}
//创建数据库函数
function create_db($db_name)
{
if ($db_name == "")
{
return false
}
$str = "~!@#$$%^&*(_+=|[{:"'?/.,<>}])"
for ($i = 0$i <strlen($str)$i++)
{
if (eregi($str{$i}, $db_name))
{
return false
}
}
return ($this->struct_sql("CREATE DATABASE {$db_name} ")) ? true : false
}
//删除数据库
function drop_db($db_name)
{
if ($db_name == "")
{
return false
}
$str = "~!@#$$%^&*(_+=|[{:"'?/.,<>}])"
for ($i = 0$i <strlen($str)$i++)
{
if (eregi($str{$i}, $db_name))
{
return false
}
}
return ($this->struct_sql("DROP DATABASE {$db_name} ")) ? true : false
}
//清空数据表
function truncate_table($t_name)
{
if ($t_name == "")
{
return false
}
$str = "~!@#$$%^&*(_+=|[{:"'?/.,<>}])"
for ($i = 0$i <strlen($str)$i++)
{
if (eregi($str{$i}, $t_name))
{
return false
}
}
return ($this->struct_sql("DELETE FROM {$t_name} ")) ? true : false
}
//获取最后数据库出错信息
function get_last_error()
{
$error = array()
$error["number"] = sqlite3_error($this->db_link)
$error[0] = $error["number"]
$error["string"] = sqlite3_error($error[0])
$error[1] = $error["string"]
return $error
}
}
?>
SQLite Helper类,基于.net c#的SQLite数据库 *** 作类SQLite这个精巧的小数据库,无需安装软件,只需要一个System.Data.SQLite.DLL文件即可 *** 作SQLite数据库。但是据说功能却非常强大。简介:SQLite是一个开源数据库,现在已变得越来越流行,它的体积很小,被广泛应用于各种不同类型的应用中。SQLite已经是世界上布署得最广泛的SQL数据库引擎,被用在无以计数的桌面电脑应用中,还有消费电子设备中,如移动电话、掌上电脑和MP3播放器等。SQLite的源码就放在公有领域(即WikiPedia的public domain)中。开始使用:Sqliteman,windows下最好的sqlite gui客户端 sqlite,sqliteman 7.72M
SQLite Administrator 0.8.3.2┊是基于数据库引擎的管理工具┊汉化绿色特别版 sqlite 1.68M
SQLite,除了access,mysql以外的另外一个轻量级数据库
using System
using System.Collections.Generic
using System.Text
using System.Web
using System.Configuration
using System.Data
using System.Data.SQLitenamespace DAL
{
public class Sqlite
{
/// <summary>
/// 获得连接对象
/// </summary>
/// <returns></returns>
public static SQLiteConnection GetSQLiteConnection()
{
return new SQLiteConnection("Data Source=" + System.Web.HttpContext.Current.Server.MapPath(System.Configuration.ConfigurationManager.AppSettings["db"].ToString()))
}private static void PrepareCommand(SQLiteCommand cmd, SQLiteConnection conn, string cmdText, params object[] p)
{if (conn.State != ConnectionState.Open)
conn.Open()
cmd.Parameters.Clear()
cmd.Connection = conn
cmd.CommandText = cmdText cmd.CommandType = CommandType.Text
cmd.CommandTimeout = 30 if (p != null)
{
foreach (object parm in p)
cmd.Parameters.AddWithValue(string.Empty, parm)
//for (int i = 0i <p.Lengthi++)
//cmd.Parameters[i].Value = p[i]
}
}public static DataSet ExecuteDataset(string cmdText, params object[] p)
{
DataSet ds = new DataSet()
SQLiteCommand command = new SQLiteCommand()
using (SQLiteConnection connection = GetSQLiteConnection())
{
PrepareCommand(command, connection, cmdText, p)
SQLiteDataAdapter da = new SQLiteDataAdapter(command)
da.Fill(ds)
}return ds
}public static DataRow ExecuteDataRow(string cmdText, params object[] p)
{
DataSet ds = ExecuteDataset(cmdText, p)
if (ds != null &&ds.Tables.Count >0 &&ds.Tables[0].Rows.Count >0)
return ds.Tables[0].Rows[0]
return null
}/// <summary>
/// 返回受影响的行数
/// </summary>
/// <param name="cmdText">a</param>
/// <param name="commandParameters">传入的参数</param>
/// <returns></returns>
public static int ExecuteNonQuery(string cmdText, params object[] p)
{
SQLiteCommand command = new SQLiteCommand() using (SQLiteConnection connection = GetSQLiteConnection())
{
PrepareCommand(command, connection, cmdText, p)
return command.ExecuteNonQuery()
}
}/// <summary>
/// 返回SqlDataReader对象
/// </summary>
/// <param name="cmdText"></param>
/// <param name="commandParameters">传入的参数</param>
/// <returns></returns>
public static SQLiteDataReader ExecuteReader(string cmdText, params object[] p)
{
SQLiteCommand command = new SQLiteCommand()
SQLiteConnection connection = GetSQLiteConnection()
try
{
PrepareCommand(command, connection, cmdText, p)
SQLiteDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection)
return reader
}
catch
{
connection.Close()
throw
}
}/// <summary>
/// 返回结果集中的第一行第一列,忽略其他行或列
/// </summary>
/// <param name="cmdText"></param>
/// <param name="commandParameters">传入的参数</param>
/// <returns></returns>
public static object ExecuteScalar(string cmdText, params object[] p)
{
SQLiteCommand cmd = new SQLiteCommand() using (SQLiteConnection connection = GetSQLiteConnection())
{
PrepareCommand(cmd, connection, cmdText, p)
return cmd.ExecuteScalar()
}
}/// <summary>
/// 分页
/// </summary>
/// <param name="recordCount"></param>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="cmdText"></param>
/// <param name="countText"></param>
/// <param name="p"></param>
/// <returns></returns>
public static DataSet ExecutePager(ref int recordCount, int pageIndex, int pageSize, string cmdText, string countText, params object[] p)
{
if (recordCount <0)
recordCount = int.Parse(ExecuteScalar(countText, p).ToString()) DataSet ds = new DataSet() SQLiteCommand command = new SQLiteCommand()
using (SQLiteConnection connection = GetSQLiteConnection())
{
PrepareCommand(command, connection, cmdText, p)
SQLiteDataAdapter da = new SQLiteDataAdapter(command)
da.Fill(ds, (pageIndex - 1) * pageSize, pageSize, "result")
}
return ds
}
}
}
以上是我根据SqlHelper、OledbHelper类修改而来。我已经使用过。但是不确定是否完善,因为我对SQLite接触时间还不长。欢迎大家批评指正。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)