PHP中怎么使用SQLite数据库,最好可以把创建和连接数据库的代码发出来。谢谢!急!急!急!

PHP中怎么使用SQLite数据库,最好可以把创建和连接数据库的代码发出来。谢谢!急!急!急!,第1张

首先说基本配置:

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接触时间还不长。欢迎大家批评指正。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9569484.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存