You've already forked qlg.tsgz.moe
							
							
		
			
				
	
	
		
			120 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			120 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
| <?php
 | |
| class LtDbSqlAdapterSqlite implements LtDbSqlAdapter
 | |
| {
 | |
| 	public function setCharset($charset)
 | |
| 	{
 | |
| 		// return 'PRAGMA encoding = "' . $charset . '"';
 | |
| 		return '';
 | |
| 	}
 | |
| 	public function setSchema($schema)
 | |
| 	{
 | |
| 		return '';
 | |
| 	}
 | |
| 
 | |
| 	public function beginTransaction()
 | |
| 	{
 | |
| 		return 'BEGIN TRANSACTION';
 | |
| 	}
 | |
| 
 | |
| 	public function commit()
 | |
| 	{
 | |
| 		return 'COMMIT TRANSACTION';
 | |
| 	}
 | |
| 
 | |
| 	public function rollBack()
 | |
| 	{
 | |
| 		return 'ROLLBACK TRANSACTION';
 | |
| 	}
 | |
| 
 | |
| 	public function showSchemas($database)
 | |
| 	{
 | |
| 		//return "SHOW DATABASES";
 | |
| 		return '';
 | |
| 	}
 | |
| 	public function showTables($schema)
 | |
| 	{
 | |
| 		// 临时表及其索引不在 SQLITE_MASTER 表中而在 SQLITE_TEMP_MASTER 中出现
 | |
| 		return "SELECT name FROM sqlite_master WHERE type='table' UNION ALL SELECT name FROM sqlite_temp_master WHERE type='table' ORDER BY name";
 | |
| 	}
 | |
| 	public function showFields($table)
 | |
| 	{
 | |
| 		return "PRAGMA table_info('" . $table . "')";
 | |
| 
 | |
| 	}
 | |
| 	public function limit($limit, $offset)
 | |
| 	{
 | |
| 		return " LIMIT $limit OFFSET $offset";
 | |
| 	}
 | |
| 
 | |
| 	public function getSchemas($queryResult)
 | |
| 	{
 | |
| 		
 | |
| 	}
 | |
| 	public function getTables($queryResult)
 | |
| 	{
 | |
| 		return $queryResult;
 | |
| 	}
 | |
| 	public function getFields($queryResult)
 | |
| 	{
 | |
| 		$fields = array();
 | |
| 		foreach ($queryResult as $key => $value)
 | |
| 		{
 | |
| 			// 字段名
 | |
| 			$fields[$value['name']]['name'] = $value['name'];
 | |
| 			// 字段类型
 | |
| 			$fulltype = $value['type'];
 | |
| 			$size = null;
 | |
| 			$precision = null;
 | |
| 			$scale = null;
 | |
| 
 | |
| 			if (preg_match('/^([^\(]+)\(\s*(\d+)\s*,\s*(\d+)\s*\)$/',$fulltype, $matches))
 | |
| 			{
 | |
| 				$type = $matches[1];
 | |
| 				$precision = $matches[2];
 | |
| 				$scale = $matches[3]; // aka precision
 | |
| 			}
 | |
| 			elseif (preg_match('/^([^\(]+)\(\s*(\d+)\s*\)$/',$fulltype, $matches))
 | |
| 			{
 | |
| 				$type = $matches[1];
 | |
| 				$size = $matches[2];
 | |
| 			}
 | |
| 			else
 | |
| 			{
 | |
| 				$type = $fulltype;
 | |
| 			}
 | |
| 
 | |
| 			$fields[$value['name']]['type'] = $type;
 | |
| 			/**
 | |
| 			* not null is 99, null is 0
 | |
| 			*/
 | |
| 			$fields[$value['name']]['notnull'] = (bool) ($value['notnull'] != 0);
 | |
| 			$fields[$value['name']]['default'] = $value['dflt_value'];
 | |
| 			$fields[$value['name']]['primary'] = (bool) ($value['pk'] == 1 && strtoupper($fulltype) == 'INTEGER');
 | |
| 		}
 | |
| 		return $fields;
 | |
| 	}
 | |
| 	public function detectQueryType($sql)
 | |
| 	{
 | |
| 		if (preg_match("/^\s*SELECT|^\s*PRAGMA/i", $sql))
 | |
| 		{
 | |
| 			$ret = 'SELECT';
 | |
| 		}
 | |
| 		else if (preg_match("/^\s*INSERT/i", $sql))
 | |
| 		{
 | |
| 			$ret = 'INSERT';
 | |
| 		}
 | |
| 		else if (preg_match("/^\s*UPDATE|^\s*DELETE|^\s*REPLACE/i", $sql))
 | |
| 		{
 | |
| 			$ret = 'CHANGE_ROWS';
 | |
| 		}
 | |
| 		else if (preg_match("/^\s*USE|^\s*SET/i", $sql))
 | |
| 		{
 | |
| 			$ret = 'SET_SESSION_VAR';
 | |
| 		}
 | |
| 		else
 | |
| 		{
 | |
| 			$ret = 'OTHER';
 | |
| 		}
 | |
| 		return $ret;
 | |
| 	}
 | |
| } |