ラベル Sqlite の投稿を表示しています。 すべての投稿を表示
ラベル Sqlite の投稿を表示しています。 すべての投稿を表示

2016年11月27日日曜日

Android SQL

Android SQL



package com.example.e560.m1126a.ToolsClass;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

import org.json.JSONArray;
import org.json.JSONObject;

/**
 * Created by E560 on 2016/11/26.
 */

public class FlickrSQL {
    /**
     *
     */
    private Context context;
    private final String TAG = "FlickrSQL";
    private final String JSON_PATH = "http://cdefgab.web.fc2.com/idolsname.json";
    private final String DB_NAME = "IdolAPP.db";
    private final int DB_VERSION = 1;
    private mSQL mSQL_db;

    /**
     * @param context
     */
    public FlickrSQL(Context context) {
        this.context = context;
        mSQL_db = new mSQL(context, DB_NAME, null, DB_VERSION);
    }

    /**
     * 檢查Name是否存在。count = 1 存在,0 不存在。
     *
     * @param name
     * @return
     * @throws Exception
     */

    public int check_name(String name) throws Exception {
        int count = 0;
        SQLiteDatabase db = mSQL_db.getWritableDatabase();
        String sql_cmd = "select name from toplist where name = ?";
        Cursor cursor = db.rawQuery(sql_cmd, new String[]{name});
        count = cursor.getCount();
        cursor.close();
        db.close();
        return count;
    }

    /**
     * 返回Name個數。
     *
     * @return
     */
    public int db_count() {
        int count = 0;
        SQLiteDatabase db = mSQL_db.getReadableDatabase();
        String sql_cmd = "select count(*) from toplist";
        Cursor cursor = db.rawQuery(sql_cmd, null);
        while (cursor.moveToNext()) {
            count = Integer.parseInt(cursor.getString(cursor.getColumnIndex("count(*)")));
        }
        cursor.close();
        Log.i(TAG, "db_idols_count: " + count);
        db.close();
        return count;
    }

    /**
     * 返回所有條目。
     *
     * @return
     */
    public Cursor Selectall() {
        Cursor cursor = null;
        SQLiteDatabase db = mSQL_db.getReadableDatabase();
        String sql_cmd = "select * from toplist WHERE active NOT IN(?) ORDER BY up_date DESC ";
        cursor = db.rawQuery(sql_cmd, new String[]{"false"});
        return cursor;
    }

    /**
     * 從JSON_PATH 更新客戶端數據庫。
     * String JSON_PATH = "http://cdefgab.web.fc2.com/idolsname.json";
     *
     * @throws Exception
     */
    public void sysdb() throws Exception {
        int insertcount = 0;
        SQLiteDatabase db = mSQL_db.getWritableDatabase();
        String json = FlickrHttp.GetResultstring(JSON_PATH);
        JSONObject jsonObject = new JSONObject(json);
        JSONArray jsonArray = jsonObject.getJSONArray("idolnames");
        for (int i = 0; i < jsonArray.length(); i++) {
            JSONObject jsonObject1 = jsonArray.getJSONObject(i);
            if (check_name(jsonObject1.getString("name")) == 1) {
                update_active(jsonObject1.getString("name"), jsonObject1.getString("active"));
            } else {
                insertcount++;
                insert(jsonObject1.getString("name"), jsonObject1.getString("img"));
                update_active(jsonObject1.getString("name"), jsonObject1.getString("active"));
            }
        }
        Log.i(TAG, "sysdb: new Insert " + insertcount);
        db.close();
    }

    public void insert(String name, String img_url) {
        SQLiteDatabase db = mSQL_db.getWritableDatabase();
        String sql_cmd = "insert into toplist(name,img_url) values (? ,?)";
        db.execSQL(sql_cmd, new String[]{name, img_url});
        db.close();
    }

    public void update_imgurl(String name, String img_url) {
        SQLiteDatabase db = mSQL_db.getWritableDatabase();
        String sql_cmd = "update toplist set img_url = ? where name = ?";
        db.execSQL(sql_cmd, new String[]{name, img_url});
        db.close();
    }

    public void update_active(String name, String active) {
        SQLiteDatabase db = mSQL_db.getWritableDatabase();
        String sql_cmd = "update toplist set active = ? where name = ?";
        db.execSQL(sql_cmd, new String[]{active, name});
        db.close();
    }

    public class mSQL extends SQLiteOpenHelper {

        /**
         * mSQL_db = new mSQL(context, db_pak_name, null, db_version);
         * https://farm8.staticflickr.com/7566/15949681296_b6a869bdfd_q.jpg
         * https://farm8.staticflickr.com/7569/15975428145_c85aae84bd_s.jpg
         */

        public mSQL(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
            super(context, name, factory, version);
        }

        @Override
        public void onCreate(SQLiteDatabase db) {
            String topidoltable = "create table toplist (rowid INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT UNIQUE NOT NULL,up_date TEXT default current_timestamp,img_url TEXT NOT NULL, accc INTEGER DEFAULT 0, Active TEXT DEFAULT 'ture')";
            String setimgurl = "update toplist set img_url = ?";
            db.execSQL(topidoltable);
            db.execSQL(setimgurl, new String[]{"https://farm8.staticflickr.com/7569/15975428145_c85aae84bd_s.jpg"});
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

        }
    }
}








/**
 * Created by E560 on 2016/11/26.
 */

public class test_FlickrSQL extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.test);
        new Th().start();
    }

    class Th extends Thread {
        @Override
        public void run() {
            try {
                FlickrSQL flickrSQL = new FlickrSQL(getApplicationContext());
//                flickrSQL.sysdb();
//                flickrSQL.db_count();

                Cursor cursor = flickrSQL.Selectall();

                while (cursor.moveToNext()) {
                    String rowid = cursor.getString(cursor.getColumnIndex("rowid"));
                    String name = cursor.getString(cursor.getColumnIndex("name"));
                    String up_date = cursor.getString(cursor.getColumnIndex("up_date"));
                    String img_url = cursor.getString(cursor.getColumnIndex("img_url"));
                    String accc = cursor.getString(cursor.getColumnIndex("accc"));
                    String Active = cursor.getString(cursor.getColumnIndex("Active"));

                    System.out.println(rowid);
                    System.out.println(name);
                    System.out.println(up_date);
                    System.out.println(img_url);
                    System.out.println(accc);
                    System.out.println(Active);
                }
//                cursor.close();


            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

2016年1月5日火曜日

SQLITE3利用したログ記録 その3

<?php
//logo
set_time_limit(120);
session_name('aixin');
session_start();
//error_reporting(E_ALL);
date_default_timezone_set('Asia/Tokyo');
//include_once('acclog.php');

$hi = new acclog();
if(count(get_included_files()) == 1){
if(array_key_exists('xx',$_GET)){
//$hi->viewlog();
$hi->viewlog2();
}else{
$name = basename(__FILE__);
echo '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">';
echo '<html><head>';
echo '<title>404 Not Found</title>';
echo '</head><body>';
echo '<h1>Not Found</h1>';
echo "<p>The requested URL /{$name} was not found on this server.</p>";
echo '</body></html>';
exit();
}
}

class acclog{
public $db_name = "acclog.db";
// select datetime(request_time,"localtime") from log;

public function acclog(){
if(!file_exists($this->db_name)){
$this->create_acclog_db();
}

if(filesize($this->db_name) > 6438912){
$this->diet();
}

$db = new sqlite3($this->db_name);
$db->busyTimeout(10000);
$temp = $db->prepare("insert into log ('remote_addr','http_user_agent','request_uri','http_accept_language') values (:a,:b,:c,:d)");
$temp->bindValue(':a',$_SERVER['REMOTE_ADDR'],SQLITE3_TEXT);
$temp->bindValue(':b',$this->user_agent($_SERVER['HTTP_USER_AGENT']),SQLITE3_TEXT);
$temp->bindValue(':c',$_SERVER['REQUEST_URI'],SQLITE3_TEXT);
$temp->bindValue(':d',$_SERVER['HTTP_ACCEPT_LANGUAGE'],SQLITE3_TEXT);
$temp->execute();
$db->close();
$this->page_count($_SERVER['SCRIPT_FILENAME']);
}

private function user_agent($agent){
$db = new sqlite3($this->db_name);
$db->busyTimeout(10000);
$sql_select = sprintf("select rowid from user_agent where http_user_agent = \"%s\"",$agent);
$sql_insert = sprintf("insert into user_agent (http_user_agent) values (\"%s\")",$agent);
$temp = $db->querySingle($sql_select);
if(is_null($temp)){
$db->exec($sql_insert);
$temp = $db->querySingle($sql_select);
$db->close();
return $temp;
}else{
$db->close();
return $temp;
}

$db->close();
}

public function viewlog2(){
$db = new sqlite3($this->db_name);
$db->busyTimeout(1000);
$temp1 = $db->querySingle("select count(*) from log");
$temp2 = $db->querySingle("select count(*) from user_agent");
$temp3 = $db->querySingle("select count(*) from page_count");
$file_size = round((filesize($this->db_name)/1024/1024),2);

echo "<div>log_count:: {$temp1}</div>";
echo "<div>user_agent_count:: {$temp2}</div>";
echo "<div>page_count:: {$temp3}</div>";
echo "<div>file_size:: {$file_size} MB</div>";
echo '<br>';

$vt = $db->prepare("select * from page_count");
$vx = $vt->execute();

echo '<table border=1>';
while($vxx = $vx->fetchArray(SQLITE3_ASSOC)){
echo "<tr><td>{$vxx['script_filename']}</td><td>{$vxx['count']}</td></tr>";
}
echo '</table>';


$db->close();
}


public function viewlog(){
$db = new sqlite3($this->db_name);
$db->busyTimeout(10000);
$temp = $db->prepare("select rowid,http_user_agent from user_agent order by http_user_agent asc");
$temp2 = $temp->execute();
while($temp3 = $temp2->fetchArray(SQLITE3_ASSOC)){
$temp4 = $this->user_agent_count($temp3['rowid']);
if($temp4 != 0){
echo "<div>{$temp3['rowid']}::{$temp3['http_user_agent']}</div>";
echo "<div>{$temp4}</div>";
echo "<div><br></div>";
}
}

$vt = $db->prepare("select * from page_count");
$vx = $vt->execute();
while($vxx = $vx->fetchArray(SQLITE3_ASSOC)){
echo "<div>[script_filename] => {$vxx['script_filename']}</div>";
echo "<div>[count] => {$vxx['count']}</div>";
}

$db->close();
}

private function user_agent_count($rowid){
$db = new sqlite3($this->db_name);
$db->busyTimeout(10000);
$temp = $db->prepare("select count(*) as count from log where http_user_agent = :a");
$temp->bindValue(':a',$rowid);
$temp2 = $temp->execute();

while($temp3 = $temp2->fetchArray(SQLITE3_ASSOC)){
$db->close();
return $temp3['count'];
}
$db->close();
}

private function page_count($script_filename){
$db = new sqlite3($this->db_name);
$db->busyTimeout(10000);
//script_filename
$sql_1 = sprintf("select script_filename from page_count where script_filename = \"%s\"",$script_filename);
$sql_2 = sprintf("insert into page_count (script_filename,count) values (\"%s\",0)",$script_filename);
$sql_3 = sprintf ("update page_count set count = count + 1 where script_filename = \"%s\"",$script_filename);
$temp = $db->querySingle($sql_1);

if($temp == null){
$db->exec($sql_2);
$db->exec($sql_3);
}else{
$db->exec($sql_3);
}
$db->close();
}

private function diet(){
$db = new sqlite3($this->db_name);
$db->busyTimeout(10000);
//$temp = $db->prepare("delete from log where request_time < datetime('now','-2 days')");
//$temp->execute();
$sql = sprintf("delete from log where request_time < datetime('now','-1 days')");
$db->exec($sql);
$db->exec('VACUUM');
$db->close();
}

public function create_acclog_db(){
$db = new sqlite3($this->db_name);
$db->busyTimeout(10000);
$create_db =
"create table log(
request_time text default current_timestamp,
remote_addr text,
http_user_agent text,
request_uri text,
http_accept_language text
)";

$db->exec($create_db);

$create_db =
"create table user_agent(
http_user_agent text
)";

$db->exec($create_db);

$create_db =
"create table page_count(
script_filename text unique,
count integer
)";

$db->exec($create_db);
$db->close();
}
}



//old
function old_mf_log($log=null){
error_reporting(0);
date_default_timezone_set('Asia/Tokyo');
$file=basename(__FILE__);
$log_server[$file]=date('c');
$log_server['ip']=$_SERVER['REMOTE_ADDR'];
$log_server['uag']=$_SERVER['HTTP_USER_AGENT'];
$log_server['lg']=$_SERVER['HTTP_ACCEPT_LANGUAGE'];
$log_server['url']=$log;

$log_str='<?php //';
foreach ($log_server as $key=>$val){
$log_str=$log_str.$key.'>'.$val.', ';
unset($val);
unset($key);
}
$log_str=$log_str.'// ?>'."\r\n";
file_put_contents('log_itunes.php', $log_str, FILE_APPEND | LOCK_EX);
}





?>

2015年12月29日火曜日

SQLITE3利用したログ記録 その2

SQLITE3利用したログ記録 その2

private function page_count () を追加しました。
script_filename アクセス数をカウントします。



<?php
//logo
session_name('aixin');
session_start();
//error_reporting(E_ALL);
date_default_timezone_set('Asia/Tokyo');
//include_once('acclog.php');

$hi = new acclog();
if(count(get_included_files()) == 1){
if(array_key_exists('xx',$_GET)){
$hi->viewlog();
}else{
$name = basename(__FILE__);
echo '<html><head>';
echo '<title>404 Not Found</title>';
echo '</head><body>';
echo '<h1>Not Found</h1>';
echo "<p>The requested URL /{$name} was not found on this server.</p>";
echo '</body></html>';
exit();
}
}

class acclog{
public $db_name = "acclog.db";
// select datetime(request_time,"localtime") from log;

public function acclog(){
if(!file_exists($this->db_name)){
$this->create_acclog_db();
}

if(filesize($this->db_name) > 6438912){
$this->diet();
}

$db = new sqlite3($this->db_name);
$db->busyTimeout(10000);
$temp = $db->prepare("insert into log ('remote_addr','http_user_agent','request_uri','http_accept_language') values (:a,:b,:c,:d)");
$temp->bindValue(':a',$_SERVER['REMOTE_ADDR'],SQLITE3_TEXT);
$temp->bindValue(':b',$this->user_agent($_SERVER['HTTP_USER_AGENT']),SQLITE3_TEXT);
$temp->bindValue(':c',$_SERVER['REQUEST_URI'],SQLITE3_TEXT);
$temp->bindValue(':d',$_SERVER['HTTP_ACCEPT_LANGUAGE'],SQLITE3_TEXT);
$temp->execute();
$db->close();
$this->page_count($_SERVER['SCRIPT_FILENAME']);
}

private function user_agent($agent){
$db = new sqlite3($this->db_name);
$db->busyTimeout(10000);
$sql_select = sprintf("select rowid from user_agent where http_user_agent = \"%s\"",$agent);
$sql_insert = sprintf("insert into user_agent (http_user_agent) values (\"%s\")",$agent);
$temp = $db->querySingle($sql_select);
if(is_null($temp)){
$db->exec($sql_insert);
$temp = $db->querySingle($sql_select);
$db->close();
return $temp;
}else{
$db->close();
return $temp;
}

$db->close();
}

public function viewlog(){
$db = new sqlite3($this->db_name);
$db->busyTimeout(10000);
$temp = $db->prepare("select rowid,http_user_agent from user_agent order by http_user_agent asc");
$temp2 = $temp->execute();
while($temp3 = $temp2->fetchArray(SQLITE3_ASSOC)){
$temp4 = $this->user_agent_count($temp3['rowid']);
if($temp4 != 0){
echo "<div>{$temp3['rowid']}::{$temp3['http_user_agent']}</div>";
echo "<div>{$temp4}</div>";
echo "<div><br></div>";
}
}

$vt = $db->prepare("select * from page_count");
$vx = $vt->execute();
while($vxx = $vx->fetchArray(SQLITE3_ASSOC)){
echo "<div>[script_filename] => {$vxx['script_filename']}</div>";
echo "<div>[count] => {$vxx['count']}</div>";
}

$db->close();
}

private function user_agent_count($rowid){
$db = new sqlite3($this->db_name);
$db->busyTimeout(10000);
$temp = $db->prepare("select count(*) as count from log where http_user_agent = :a");
$temp->bindValue(':a',$rowid);
$temp2 = $temp->execute();

while($temp3 = $temp2->fetchArray(SQLITE3_ASSOC)){
$db->close();
return $temp3['count'];
}
$db->close();
}

private function page_count($script_filename){
$db = new sqlite3($this->db_name);
$db->busyTimeout(10000);
//script_filename
$sql_1 = sprintf("select script_filename from page_count where script_filename = \"%s\"",$script_filename);
$sql_2 = sprintf("insert into page_count (script_filename,count) values (\"%s\",0)",$script_filename);
$sql_3 = sprintf ("update page_count set count = count + 1 where script_filename = \"%s\"",$script_filename);
$temp = $db->querySingle($sql_1);

if($temp == null){
$db->exec($sql_2);
$db->exec($sql_3);
}else{
$db->exec($sql_3);
}
$db->close();
}

private function diet(){
$db = new sqlite3($this->db_name);
$db->busyTimeout(10000);
$temp = $db->prepare("delete from log where request_time < datetime('now','-7 days')");
$temp->execute();
$db->exec('VACUUM');
$db->close();
}

public function create_acclog_db(){
$db = new sqlite3($this->db_name);
$db->busyTimeout(10000);
$create_db =
"create table log(
request_time text default current_timestamp,
remote_addr text,
http_user_agent text,
request_uri text,
http_accept_language text
)";

$db->exec($create_db);

$create_db =
"create table user_agent(
http_user_agent text
)";

$db->exec($create_db);

$create_db =
"create table page_count(
script_filename text unique,
count integer
)";

$db->exec($create_db);
$db->close();
}
}



//old
function old_mf_log($log=null){
error_reporting(0);
date_default_timezone_set('Asia/Tokyo');
$file=basename(__FILE__);
$log_server[$file]=date('c');
$log_server['ip']=$_SERVER['REMOTE_ADDR'];
$log_server['uag']=$_SERVER['HTTP_USER_AGENT'];
$log_server['lg']=$_SERVER['HTTP_ACCEPT_LANGUAGE'];
$log_server['url']=$log;

$log_str='<?php //';
foreach ($log_server as $key=>$val){
$log_str=$log_str.$key.'>'.$val.', ';
unset($val);
unset($key);
}
$log_str=$log_str.'// ?>'."\r\n";
file_put_contents('log_itunes.php', $log_str, FILE_APPEND | LOCK_EX);
}

?>

2015年12月28日月曜日

SQLITE3利用したログ記録

ログ記録

SQLITE3利用したログ記録


<?php
//logo
session_name('log');
session_start();
error_reporting(E_ALL);
date_default_timezone_set('Asia/Tokyo');
//include_once('acclog.php');

$hi = new acclog();
if(count(get_included_files()) == 1){
$hi->viewlog();
}

class acclog{
public $db_name = "acclog.db";
// select datetime(request_time,"localtime") from log;

public function acclog(){
if(!file_exists($this->db_name)){
$this->create_acclog_db();
}

if(filesize($this->db_name) > 6438912){
$this->diet();
}

$db = new sqlite3($this->db_name);
$db->busyTimeout(10000);
$temp = $db->prepare("insert into log ('remote_addr','http_user_agent','request_uri','http_accept_language') values (:a,:b,:c,:d)");
$temp->bindValue(':a',$_SERVER['REMOTE_ADDR'],SQLITE3_TEXT);
$temp->bindValue(':b',$this->user_agent($_SERVER['HTTP_USER_AGENT']),SQLITE3_TEXT);
$temp->bindValue(':c',$_SERVER['REQUEST_URI'],SQLITE3_TEXT);
$temp->bindValue(':d',$_SERVER['HTTP_ACCEPT_LANGUAGE'],SQLITE3_TEXT);
$temp->execute();
$db->close();
}

private function user_agent($agent){
$db = new sqlite3($this->db_name);
$db->busyTimeout(10000);
$sql_select = sprintf("select rowid from user_agent where http_user_agent = \"%s\"",$agent);
$sql_insert = sprintf("insert into user_agent (http_user_agent) values (\"%s\")",$agent);
$temp = $db->querySingle($sql_select);
if(is_null($temp)){
$db->exec($sql_insert);
$temp = $db->querySingle($sql_select);
$db->close();
return $temp;
}else{
$db->close();
return $temp;
}

$db->close();
}

public function viewlog(){
$db = new sqlite3($this->db_name);
$db->busyTimeout(10000);
$temp = $db->prepare("select rowid,http_user_agent from user_agent order by http_user_agent asc");
$temp2 = $temp->execute();
while($temp3 = $temp2->fetchArray(SQLITE3_ASSOC)){
$temp4 = $this->user_agent_count($temp3['rowid']);
if($temp4 != 0){
echo "<div>{$temp3['rowid']}::{$temp3['http_user_agent']}</div>";
echo "<div>{$temp4}</div>";
echo "<div><br></div>";
}
}
$db->close();
}

private function user_agent_count($rowid){
$db = new sqlite3($this->db_name);
$db->busyTimeout(10000);
$temp = $db->prepare("select count(*) as count from log where http_user_agent = :a");
$temp->bindValue(':a',$rowid);
$temp2 = $temp->execute();

while($temp3 = $temp2->fetchArray(SQLITE3_ASSOC)){
$db->close();
return $temp3['count'];
}
$db->close();
}


private function diet(){
$db = new sqlite3($this->db_name);
$db->busyTimeout(10000);
$temp = $db->prepare("delete from log where request_time < datetime('now','-7 days')");
$temp->execute();
$db->exec('VACUUM');
$db->close();
}


public function create_acclog_db(){
$db = new sqlite3($this->db_name);
$db->busyTimeout(10000);
$create_db =
"create table log(
request_time text default current_timestamp,
remote_addr text,
http_user_agent text,
request_uri text,
http_accept_language text
)";

$db->exec($create_db);

$create_db =
"create table user_agent(
http_user_agent text
)";

$db->exec($create_db);
$db->close();
}
}



//old
function mf_log($log=null){
error_reporting(0);
date_default_timezone_set('Asia/Tokyo');
$file=basename(__FILE__);
$log_server[$file]=date('c');
$log_server['ip']=$_SERVER['REMOTE_ADDR'];
$log_server['uag']=$_SERVER['HTTP_USER_AGENT'];
$log_server['lg']=$_SERVER['HTTP_ACCEPT_LANGUAGE'];
$log_server['url']=$log;

$log_str='<?php //';
foreach ($log_server as $key=>$val){
$log_str=$log_str.$key.'>'.$val.', ';
unset($val);
unset($key);
}
$log_str=$log_str.'// ?>'."\r\n";
file_put_contents('log_itunes.php', $log_str, FILE_APPEND | LOCK_EX);
}


?>















2015年12月6日日曜日

SQLITE3


.d  dump
.e  exit
.h help
.i
.q exit
.s schema
.v ver


NULL       NULL値
INTEGER    符号付整数。1, 2, 3, 4, 6, or 8 バイトで格納
REAL       浮動小数点数。8バイトで格納
TEXT       テキスト。UTF-8, UTF-16BE or UTF-16-LEのいずれかで格納
BLOB       Binary Large OBject。入力データをそのまま格納


CREATE TABLE テーブル名(カラム名 PRIMARY KEY, ...);
CREATE TABLE テーブル名(カラム名1, カラム名2, ... , PRIMARY KEY(カラム名1, カラム名2, ...));
CREATE TABLE テーブル名(カラム名 INTEGER PRIMARY KEY, ...);
CREATE TABLE テーブル名(カラム名 INTEGER PRIMARY KEY AUTOINCREMENT, ...);
CREATE TABLE テーブル名(カラム名 NOT NULL, ...);
CREATE TABLE テーブル名(カラム名 UNIQUE, ...);
CREATE TABLE テーブル名(カラム名 DEFAULT 値, ...);
CREATE TABLE テーブル名(カラム名 CHECK(条件式), ...);
CREATE INDEX インデックス名 ON テーブル名(カラム名1, カラム名2, ...);
CREATE UNIQUE INDEX インデックス名 ON テーブル名(カラム名1, カラム名2, ...);
CREATE VIEW ビュー名 AS SELECT文;
CREATE TRIGGER トリガー名 [ BEFORE | AFTER | INSTEAD OF]

CURRENT_TIME         HH:MM:SS形式
CURRENT_DATE         YYYY-MM-DD形式
CURRENT_TIMESTAMP    YYYY-MM-DD HH:MM:SS形式



 { DELETE | UPDATE [OF カラム名, ...] | INSERT } ON テーブル名
 [ FOR EACH ROW | FOR EACH STATEMENT ]
 [ WHERE 条件式 ]
 BEGIN
  SQL文1;
  SQL文2;
  ...
 END;
CREATE TRIGGER トリガー名 UPDATE OF カラム名 ON テーブル名
 BEGIN
  SQL文1;
  SQL文2;
  ...
 END;
CREATE TRIGGER トリガー名 DELETE ON テーブル名
 BEGIN
  SQL文1;
  SQL文2;
  ...
 END;
CREATE TRIGGER トリガー名 INSERT ON テーブル名
 BEGIN
  SQL文1;
  SQL文2;
  ...
 END;


INSERT INTO テーブル名 VALUES(値1, 値2, ...);
INSERT INTO テーブル名(カラム1, カラム2, ...) VALUES(値1, 値2, ...);
INSERT INTO テーブル名 DEFAULT VALUES;
INSERT INTO テーブル名 SQL文;
INSERT INTO テーブル名(カラム名1, カラム名2, ...) SQL文;
REPLACE INTO tbl1 VALUES(1,'古田一郎', '埼玉県', 30);

UPDATE テーブル名 SET カラム名1 = 値1, カラム名2 = 値2, ... WHERE 条件式;
UPDATE テーブル名 SET カラム名1 = 値1, カラム名2 = 値2, ...;

SELECT カラム名1, カラム名2, ... FROM テーブル名;
SELECT カラム名 , ... FROM テーブル名 ORDER BY カラム名1 [ASC | DESC], カラム名2 [ASC | DESC], ...;
SELECT カラム名 , ... FROM テーブル名 WHERE 条件式;
SELECT カラム名 , ... FROM テーブル名 WHERE カラム >= 値1 AND カラム <= 値2;
SELECT カラム名 , ... FROM テーブル名 WHERE カラム BETWEEN 値1 AND 値2;
SELECT カラム名 , ... FROM テーブル名 WHEREカラム NOT BETWEEN 値1 AND 値2;
SELECT カラム名 , ... FROM テーブル名 WHERE カラム >= 値1 OR カラム <= 値2 OR ...;
SELECT カラム名 , ... FROM テーブル名 WHERE カラム IN(値1, 値2, ...);
SELECT カラム名 , ... FROM テーブル名 WHERE カラム NOT IN(値1, 値2, ...);
SELECT カラム名 , ... FROM テーブル名 WHERE カラム IN(SELECT カラム名 FROM テーブル名);
SELECT カラム名 , ... FROM テーブル名 WHERE カラム NOT IN(SELECT カラム名 FROM テーブル名);
SELECT カラム名 , ... FROM テーブル名 WHERE カラム LIKE パターン;
 select author from vid where author like '%kan%';
SELECT カラム名 , ... FROM テーブル名 WHERE カラム LIKE パターン ESCAPE エスケープ文字;
SELECT カラム名 , ... FROM テーブル名 WHERE カラム GLOB パターン;
SELECT カラム名 , ... FROM テーブル名 WHERE カラム IS NULL;
SELECT カラム名 , ... FROM テーブル名 WHERE カラム IS NOT NULL;
SELECT カラム名 AS 別名, ... FROM テーブル名;
SELECT DISTINCT カラム名, ... FROM テーブル名;
SELECT ALL カラム名, ... FROM テーブル名;
SELECT カラム名, ... FROM テーブル名 LIMIT 行数;
SELECT カラム名, ... FROM テーブル名 LIMIT 行数 OFFSET 開始位置;
SELECT カラム名, ... FROM テーブル名 LIMIT 開始位置, 行数;
SELECT カラム名 演算子 値 FROM テーブル名;
SELECT
  CASE
    WHEN 条件式1 THEN 値1
    WHEN 条件式2 THEN 値2
    ELSE 値3
  END
FROM テーブル名;
SELECT
  CASE 式
    WHEN 値1 THEN 式1
    WHEN 値2 THEN 式2
    ELSE 式3
  END
FROM テーブル名;
SELECT カラム名, ... FROM テーブル名 GROUP BY カラム名, カラム名, ...;
SELECT カラム名, ... FROM テーブル名 WHERE 条件式 GROUP BY カラム名, ...;
SELECT カラム名, ... FROM テーブル名 GROUP BY カラム名, ... HAVING 条件式;
SELECT テーブル名.カラム名, ... FROM テーブル名1 INNER JOIN テーブル名2 ON テーブル名1.カラム名1 = テーブル名2.カラム名2;
SELECT テーブル名.カラム名, ... FROM テーブル名1 LEFT OUTER JOIN テーブル名2 ON テーブル名1.カラム名1 = テーブル名2.カラム名2;
SELECT テーブル名.カラム名, ... FROM テーブル名1 RIGHT OUTER JOIN テーブル名2 ON テーブル名1.カラム名1 = テーブル名2.カラム名2;
SELECT テーブル名.カラム名, ... FROM テーブル名1 FULL OUTER JOIN テーブル名2 ON テーブル名1.カラム名1 = テーブル名2.カラム名2;
SELECT テーブル名.カラム名, ... FROM テーブル名1 CROSS JOIN テーブル名2 ON テーブル名1.カラム名1 = テーブル名2.カラム名2;
SELECT テーブル名.カラム名, ... FROM テーブル名1 NATURAL INNER JOIN テーブル名2;
SELECT テーブル名.カラム名, ... FROM テーブル名1 NATURAL LEFT OUTER JOIN テーブル名2;
SELECT 別名1.カラム名, ... FROM テーブル名 別名1 INNER JOIN テーブル名 別名2 ON 別名1.カラム名 = 別名2.カラム名;

ALTER TABLE テーブル名 RENAME TO 新しいテーブル名;
ALTER TABLE テーブル名 ADD COLUMN カラム名[ データ型];
ALTER TABLE tbl_name ADD [COLUMN] column_definition;
ALTER TABLE tbl_name ADD [COLUMN] column_definition FIRST;
ALTER TABLE tbl_name ADD [COLUMN] column_definition AFTER col_name;
ALTER TABLE tbl_name DROP [COLUMN] col_name;c
ALTER TABLE tbl_name RENAME [TO] new_tbl_name;

DROP VIEW ビュー名;
DROP INDEX インデックス名;
DROP TRIGGER トリガー名;
DROP TABLE テーブル名
DELETE FROM テーブル名 WHERE 条件式;
DELETE FROM テーブル名;
VACUUM;


SQLite関数
SUM 総和を求める。
MAX 最大値を求める。
MIN 最小値を求める。
AVG 平均値を求める。
COUNT 総数を求める。
total(カラム名)

集計関数(Aggregate Functions)
count カラムまたはテーブルに含まれる行数を取得
select count(address) from customer;
select count(*) from customer;


sum  / total カラムの値の合計を取得
avg カラムの値の平均を取得
max  / min カラムの値の最大値と最小値を取得
group_concat グループ内のカラムの値を連結

日付/時刻関数(Date And Time Functions)
date  / time  / datetime 日付と時刻を取得
julianday 日付と時刻をユリウス日で取得
strftime 指定のフォーマットで日付と時刻を取得
Modifiers(修飾子)の指定
Modifiersの指定方法
// select date('now');



コア関数(Core Functions)
length 文字数を取得
lower  / upper 文字列を小文字/大文字に変換
replace 文字列を別の文字列に置換
substr 部分文字列を取得
trim  / rtrim  / ltrim 文字列の前後から特定の文字を取り除く
quote クォートした結果を取得
round 数値を四捨五入する
abs 数値の絶対値を取得
random 数値の乱数を生成
hex BLOB型の値を16進数表記する
randomblob BLOB型の値の乱数を生成
zeroblob 指定したバイト数分のBLOB型の0x00の値を生成
changes 直近に実行されたSQL文により更新/削除/追加された行数を取得
total_changes データベースに接続後にSQL文により更新/削除/追加されたトータル行数を取得
ifnull / coalesce NULLでない最初の値を取得
nullif 2つの値を比較し、等しければNULL、異なれば最初の値を返す
last_insert_rowid 最後に挿入された行のROWIDを取得
typeof 値のデータ型を取得
sqlite_version SQLiteのバージョンを取得




CREATE VIEW tp5 as select * from qeid where strftime('%s','now')-time<86400 orde
r by acc desc limit 5;

2015年8月24日月曜日

SQLITE データーベースのデーター追加(途中の記録)

SQLITE データーベースのデーター追加(途中の記録)

<?php
error_reporting(E_ALL);
date_default_timezone_set('Asia/Tokyo');
//print_r(SQLite3::version());

//
//
//
//


$x = new xtext();
echo json_encode($x->title('title',json_decode($_REQUEST['p'])));

class xtext {
public $db_name = 'xtext.db';
//
public function xtext(){
}

//
public function title($title,$paras){

$para['ad_ip'] = $_SERVER['REMOTE_ADDR'];
$para['ad_agent'] = $this->agent($_SERVER['HTTP_USER_AGENT'],"agent");
$para['ad_time'] = $_SERVER["REQUEST_TIME"];
$para['access_time'] = $_SERVER["REQUEST_TIME"];
$para['set_active'] = '1';
$para['ad_user'] = htmlentities($paras->ad_user);
$para['ad_ps'] =  htmlentities($paras->ad_ps);
$para['title'] =  htmlentities($paras->title);

$table_name = 'title';
$url_id = $this->uniq_id('title');
$this->update($table_name,$url_id,$para);

//test pint print_r($para);
return $url_id;
}


//
public function update($table,$url_id,$para ){
$db = new sqlite3($this->db_name);
foreach ($para as $key=>$val){
$insert = sprintf("update %s set %s = \"%s\" where url_id == \"%s\"" , $table,$key,$val,$url_id);
$db->exec($insert);
}
$db->close();
return 'ture';
}

// Uniquid
public function uniq_id($table_name){
$str = array(range('z','a'),range('Z','A'),range('9','0'));
$length = 11;
$str_r =array();
for ($i=0; $i<$length ;$i++){
$temp = $str[array_rand($str)];
$str_r[count($str_r)] = $temp[array_rand($temp)];
}

$db = new sqlite3($this->db_name);
do{
do{
shuffle($str_r);
$temp_id_str = implode($str_r);
$id_check = $db->querySingle(sprintf("select * from %s where url_id='%s'",$table_name,$temp_id_str),true);
if($id_check){
print_r ( $id_check);
}
}while($id_check);

$insert = sprintf("insert into %s(url_id)VALUES('%s')",$table_name,$temp_id_str);
$check = $db->exec($insert);
if($check){
$db->close();
return $temp_id_str;
}
}while(!$check);

}

// Agent
public function agent($agent,$table_name){
$db = new sqlite3($this->db_name);
$up = sprintf("update %s set count = count +1 where agent == '%s'",$table_name,$agent);
$db->exec($up);
$sch = sprintf("select ROWID from %s where agent == '%s'",$table_name,$agent);
$rowid = $db->querySingle($sch);
if(is_null($rowid)){
$new = sprintf("insert into %s (agent,count)values('%s',1)",$table_name,$agent);
$db->exec($new);
$db->close();
return 1;
}else{
$db->close();
return $rowid;
}
$db->close();
}

}


?>

SQLITE データーベース 作成 PHP

SQLITE  データーベース 作成 PHP


<?php
error_reporting(E_ALL);
date_default_timezone_set('Asia/Tokyo');
print_r(SQLite3::version());

if(!file_exists('xtext.db')){
$db = new sqlite3('xtext.db');
$create_title =
"create table title (
url_id text UNIQUE,
title text,
ad_user text default 'admin',
ad_ps text default 'admin_password',
ad_ip text default '0.0.0.0',
ad_agent text default 'Mozilla/5.0',
ad_time text default current_timestamp,
access_time text default current_timestamp,
set_active text default '1',
request_cont integer default 0,
sue_cont integer default 0)";
// set_active 1=非公開、2=公開、3=限定公開、4=削除
// sue_cont >10 非公開
//
$db->exec($create_title);

$create_items =
"create table items (
title_ROWID integer,
item text
)";
$db->exec($create_items);

$create_endusers =
"create table end_user (
url_id UNIQUE,
title_ROWID integer,
item_ROWID integer,
end_name text,
end_ip text default '0.0.0.0',
end_time text default current_timestamp
)";
$db->exec($create_endusers);


$create_agents =
"create table agent (
agent text,
count integer default 0
)";
$db->exec($create_agents);
$db->close();


}else{
echo 'exists';
}
exit;
?>

2015年8月16日日曜日

ランダム文字列 その2

ランダム文字列 その2


function mf_rand()で作成した文字列は重複することがよくあります。
今回の変更は、function mf_rand()は文字列のArrayを作成することに
し、データーベースの比較して、重複する場合、文字列の順番を変える
ことにしました。


<?php
set_time_limit(0);

$db = new sqlite3('xtext.db');
$db->busyTimeout(10000);

for ($i=0; $i<3000; $i++){
//$temp_id = uniqid(mf_rand());
//$temp_id = uniqid();
$temp_id = mf_rand();
do{
shuffle($temp_id);
$temp_id_str = implode($temp_id);
$id_check = $db->querySingle(sprintf("select * from title where url_id='%s'",$temp_id_str),true);
if($id_check){
//print_r ( $id_check);
}
}while($id_check);
$insert = sprintf("insert into title(url_id)VALUES('%s')",$temp_id_str);
$db->exec($insert);
}
$db->close();

function mf_rand(){
$str = array(range('z','a'),range('Z','A'),range('9','0'));
$length = 11;
$str_r =array();
for ($i=0; $i<$length ;$i++){
$temp = $str[array_rand($str)];
$str_r[count($str_r)] = $temp[array_rand($temp)];
}
return($str_r);
}
?>

ランダム文字列

ランダム文字列


結果
18439|kC-EU6_n_Ki||admin|admin_password||1|0
18440|34L95b28gAj||admin|admin_password||1|0
18441|i1U9_95_O2_||admin|admin_password||1|0
18442|NvNl-WklsLm||admin|admin_password||1|0
18443|NwG1_F1-H7n||admin|admin_password||1|0
18444|S--7z5-m7_-||admin|admin_password||1|0
18445|re02t7Z-yXq||admin|admin_password||1|0
18446|sN487lP8_-5||admin|admin_password||1|0
18447|GJo9l_4MN-M||admin|admin_password||1|0
18448|nav-HcE9M3H||admin|admin_password||1|0
18449|w--bl6n1Lh_||admin|admin_password||1|0
18450|-5269e50Hb2||admin|admin_password||1|0
18451|l-71gTkJeSh||admin|admin_password||1|0
18452|G38Pz0Nn21M||admin|admin_password||1|0
18453|-A-A67Hnq1W||admin|admin_password||1|0
18454|1pw890B6X_3||admin|admin_password||1|0
18455|t_Qxo_59nj-||admin|admin_password||1|0
18456|97u7_7B5_qg||admin|admin_password||1|0


Github
https://raw.githubusercontent.com/kankanla/Function/master/rand_uniqid.php



<?php
set_time_limit(0);

$db = new sqlite3('xtext.db');
$db->busyTimeout(10000);

for ($i=0; $i<1000; $i++){
do{
//$temp_id = uniqid(mf_rand());
$temp_id = mf_rand();
//$temp_id = uniqid();
$id_check = $db->querySingle(sprintf("select url_id from title where url_id='%s'",$temp_id));
if($id_check){
echo $id_check;
echo '<br>';
}
}while($id_check);
$insert = sprintf("insert into title(url_id)VALUES('%s')",$temp_id);
$db->exec($insert);
}
$db->close();




function mf_rand(){
$str = array(range('z','a'),range('Z','A'),range('9','0'),range('a','z'),range('A','Z'),range('1','9'),array('_','-'));
$length = 11;
$str_r ='';
for ($i=0; $i<$length ;$i++){
$temp = $str[array_rand($str)];
$str_r = $str_r.$temp[array_rand($temp)];
}
return($str_r);
}

?>



その2

<?php
set_time_limit(0);

$db = new sqlite3('xtext.db');
$db->busyTimeout(10000);

for ($i=0; $i<3000; $i++){
//$temp_id = uniqid(mf_rand());
//$temp_id = uniqid();
$temp_id = mf_rand();
do{
shuffle($temp_id);
$temp_id_str = implode($temp_id);
$id_check = $db->querySingle(sprintf("select * from title where url_id='%s'",$temp_id_str),true);
if($id_check){
//print_r ( $id_check);
}
}while($id_check);
$insert = sprintf("insert into title(url_id)VALUES('%s')",$temp_id_str);
$db->exec($insert);
}
$db->close();

function mf_rand(){
$str = array(range('z','a'),range('Z','A'),range('9','0'));
$length = 11;
$str_r =array();
for ($i=0; $i<$length ;$i++){
$temp = $str[array_rand($str)];
$str_r[count($str_r)] = $temp[array_rand($temp)];
}
return($str_r);
}
?>



2014年6月1日日曜日

SQLite3 ODBC Driver;

SQLite3 ODBC Driver



Private Sub Form_Open(Cancel As Integer)

Dim db As New ADODB.Connection
Dim ss As New ADODB.Recordset

db.Open "DRIVER=SQLite3 ODBC Driver;Database=C:\AccVB\vid.db"
db.CursorLocation = adUseClient



db.Execute "create table tete (id integer primary key ,iid text)"
db.Execute "insert into tete(iid) values (1111111)"
db.Execute "insert into tete(iid) values ('abcde')"
db.Execute "update tete set iid = 'tetetete' where id = 1"

Set ss = db.Execute("select * from tete")
Set Me.lt.Recordset = ss.Clone

db.Close
Set db = Nothing

End Sub


http://www.ch-werner.de/sqliteodbc/

2014年5月18日日曜日

SQLite Command

SQLite Command

忘れたコマンド


Index の作成
sqlite> create index jjj on xx(t1,t2);
sqlite> create unique index uindex on xx (t1,t2);

index の削除
sqlite> drop index uindex;

index の確認
sqlite> .s xx
CREATE TABLE xx (t1,t2,t3,t4, xx);
CREATE INDEX jjj on xx(t1,t2);

sqlite> .d xx
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE xx (t1,t2,t3,t4, xx);
INSERT INTO "xx" VALUES('a','b','c','d',NULL);
INSERT INTO "xx" VALUES('a1','b1','c1','d1',NULL);
INSERT INTO "xx" VALUES('a21','b21','c21','d21',NULL);
INSERT INTO "xx" VALUES('a321','b421','c421','d421',NULL);
INSERT INTO "xx" VALUES('t','t','t','t','t');
CREATE INDEX jjj on xx(t1,t2);
COMMIT;
sqlite>



挿入
sqlite> insert into ff values ('dd');


PRIMARY KEY
sqlite> create table ff (id integer primary key ,name text);






試しに作成したSQLite Databases.

sqlite> .d
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE vid (id integer primarykey ,vid text);
CREATE UNIQUE INDEX vidkey on vid(vid);
COMMIT;
sqlite>


































chcp 65001 UTF-8

chcp 65001 UTF-8


Sqlite Command Line UTF-8 文字を表示するために、
コマンドプロンプトのベージコードを設定します。

Chcp 65001


補足、ページコード;
437      IBM437        OEM United States
932      shift_jis         ANSI/OEM Japanese; Japanese (Shift-JIS)
1200     utf-16         Unicode UTF-16, little endian byte order (BMP of ISO 10646);
                             available only to managed applications
20127    us-ascii      US-ASCII (7-bit)
20932    EUC-JP      Japanese (JIS 0208-1990 and 0121-1990)
50220    iso-2022-jp  ISO 2022 Japanese with no halfwidth Katakana;
                             Japanese (JIS)
50222    iso-2022-jp   ISO 2022 Japanese JIS X 0201-1989;
                              Japanese (JIS-Allow 1 byte Kana - SO/SI)
51932    euc-jp         EUC Japanese
65001    utf-8          Unicode (UTF-8)

2014年5月17日土曜日

PHP Sqlite3 動作しない なぜ

PHP Sqlite3 動作しない


なぜ


Apache/2.2.25 (Win32) PHP/5.4.25

PHP 設定
  extension=php_pdo_sqlite.dll
  extension=php_sqlite3.dll





実行するとエラー出ます。

Fatal error: Call to undefined function sqlite_open() in C:\Apache\htdocs\Sqlite3\test.php on line 2


extension=php_pdo.dll

を有効にすると、Apache を起動する際、Warning PHP Startup メッセージが2回出ますが。
php_pdo.dll が存在しないようです。

PHPマニュアルを見ると
注意:
PHP 5.3 以降ではこのステップは不要です。PDO の DLL は必須ではなくなったからです。





相変わらず
実行するとエラー出ます。

Fatal error: Call to undefined function sqlite_open() in C:\Apache\htdocs\Sqlite3\test.php on line 2



次は

PHP 設定
  sqlite3.extension_dir = "C:\PHP\ext"



相変わらず
実行するとエラー出ます。

Fatal error: Call to undefined function sqlite_open() in C:\Apache\htdocs\Sqlite3\test.php on line 2



何かいい方法がありますか?












<?php
if ($db = sqlite_open('mysqlitedb', 0666, $sqliteerror)) {
    sqlite_query($db, 'CREATE TABLE foo (bar varchar(10))');
    sqlite_query($db, "INSERT INTO foo VALUES ('fnord')");
    $result = sqlite_query($db, 'select bar from foo');
    var_dump(sqlite_fetch_array($result));
} else {
    die($sqliteerror);
}
?>





解決しました?
Class 方法でアクセス出来ました。
PHP は SQLite と SQLite3 両方のマニュアルが存在することですね。

http://jp2.php.net/manual/ja/book.sqlite3.php

<?php
$db 
= new SQLite3('mysqlitedb.db');
$results $db->query('SELECT bar FROM foo');
while (
$row $results->fetchArray()) {
    
var_dump($row);
}
?>