亚洲AV永久青草无码精品,免费亚洲视频在线观看,亚洲精品久久无码av片俺去也http://m.tkk7.com/xiaoyi/category/35706.html陽光總在風雨后,讓我們在雨中毅然前行,收獲每一份喜悅的歡笑o(∩_∩)o...zh-cnWed, 22 Dec 2010 19:16:39 GMTWed, 22 Dec 2010 19:16:39 GMT60小毅整理之----解決mysql服務不能啟動 1067錯誤 進程意外終止 安裝卡住等http://m.tkk7.com/xiaoyi/articles/335507.html可愛的小毅可愛的小毅Mon, 18 Oct 2010 16:04:00 GMThttp://m.tkk7.com/xiaoyi/articles/335507.htmlhttp://m.tkk7.com/xiaoyi/comments/335507.htmlhttp://m.tkk7.com/xiaoyi/articles/335507.html#Feedback0http://m.tkk7.com/xiaoyi/comments/commentRss/335507.htmlhttp://m.tkk7.com/xiaoyi/services/trackbacks/335507.html起因以前安裝過mysql在D盤,后來重裝系統之后再裝mysql在C盤總是裝不上
具體體現: 在配置的時候,在 start service的時候卡住了 直接用命令去啟動服務出現 【無法啟動mysql服務 1067錯誤 進程以外終止】

                經過百度谷歌搜索,找到以下方法:
               1、找到安裝目錄修改my.ini中的 basedir和datadir  并打開注冊表 更改簡直與其相同
                      HKEY_LOCAL_MACHINE\SOFTWARE\MySQL 下的 DataLocation(mysql數據文件位置) 和Location (mysql安裝目
               2、使用windows命令 sc delete mysql刪除服務或mysql配置工具先remove instance再使用mysql重新配置
               3、使用360等強制卸載工具并CTRL+F手動查找所有帶mysql的鍵值并逐一手動刪除
               4、其他。。。

嘗試了幾乎所有方法,結果卻還是沒用。。。欲哭無淚!?。。。。。。。。。。。。?span style="color: #ff0000">有的說,以前安裝過的話可以換一個服務名就可以了,但是還是可能出現未知問題。。。也不知道解決方法


                                  我的電腦----管理-----事件查看器-----------應用程序----查看mysql記錄
                
                 Plugin 'InnoDB' init function returned error.
                 Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
                Unknown/unsupported table type: INNODB

                Aborting 
               
               例如我們的數據文件位置在 D:\MysqlDataFiles
              在其下面的有20880808..err   (20880808為安裝日期)  用記事本打開也可以看到錯誤記錄

                解決方法         由于INNODB沒有初始化,我們選擇 跳過INNODB即可         
                                                                    1、直接把i mysql數據文件夾下的bdata 以及ib_logfile0、ib_logfile1刪掉再啟動就好了。
                                                                    2、也可以更改 mysql.ini  (在mysql的安裝目錄下)
                                                         添加:
                                                                        [mysqld]
                                                                        skip-innodb
補充:
                                    因為某個軟件裝了早期版本但是又很難卸載干凈導致新版本的裝不上,很無奈的選擇重裝系統。。。 哭啊~
                                    mysql重裝發生錯誤 100061錯誤 ,重試N次后更郁悶------TMD直接在start services處卡死。。。 郁悶的想死啊~
                                    百度?谷歌?。。。之后,也有人遇到相同問題,但是沒有根本解決方法。。。有人選擇了 免安裝版本 ,看似解決了 實際是繞道走了。。

                                    俺偏不服?。。。。。。?! 靠,經過最少幾十次的安裝、卸載、。。加上以上的方法 終于摸出門道,特此分享:
                                        
                                     1、mysql安裝目錄\bin 目錄下,新建一個 任意名.bat  內容為 cmd.exe
                                               雙擊打開,彈出黑色dos窗口,輸入 mysqld -nt --remove 和mysqld --remove 會刪除mysql的實例以及一些東東
                                        (路徑難得打,我是偷懶方式,你也可以直接 開始---運行---  X:\mysql安裝路徑\bin\mysqld-nt --remove )
                                    2、卸載mysql  (最好用360的專業卸載工具或者其他。。。因為更徹底,非廣告)
                                    3、重點: 刪除目錄 C:\Documents and Settings\用戶名\Application Data\MySQL(XP系統下用戶名是All Users)    
                                    4、         刪除原來安裝的目錄Mysql
                                    5、重新安裝,最好更換安裝目錄 (我是試了N次之后,更換安裝目錄 OK了)          
       
特別提示:  coding最郁悶的就是很多軟件莫名其妙的錯誤 裝軟件要裝很久 又有很多,所以裝了軟件并配置好了環境變量后一定要做一個備份哦 ~否則 病毒。。裝新軟件失敗了。。無法回到沒裝過的狀態。。那是灰?;页5赜魫灥膥~~~~~  多做備份,多省心!

                       經過不斷嘗試,功夫不負有心人! 以后碰到問題不能繞著走,得一路走到底以后就再也不用怕遇到了?。。?br />



可愛的小毅 2010-10-19 00:04 發表評論
]]>
Ibatis之DAO應用http://m.tkk7.com/xiaoyi/articles/298834.html可愛的小毅可愛的小毅Mon, 19 Oct 2009 05:14:00 GMThttp://m.tkk7.com/xiaoyi/articles/298834.htmlhttp://m.tkk7.com/xiaoyi/comments/298834.htmlhttp://m.tkk7.com/xiaoyi/articles/298834.html#Feedback0http://m.tkk7.com/xiaoyi/comments/commentRss/298834.htmlhttp://m.tkk7.com/xiaoyi/services/trackbacks/298834.html閱讀全文

可愛的小毅 2009-10-19 13:14 發表評論
]]>
Ibatis之動態查詢http://m.tkk7.com/xiaoyi/articles/298832.html可愛的小毅可愛的小毅Mon, 19 Oct 2009 05:02:00 GMThttp://m.tkk7.com/xiaoyi/articles/298832.htmlhttp://m.tkk7.com/xiaoyi/comments/298832.htmlhttp://m.tkk7.com/xiaoyi/articles/298832.html#Feedback0http://m.tkk7.com/xiaoyi/comments/commentRss/298832.htmlhttp://m.tkk7.com/xiaoyi/services/trackbacks/298832.html 

iBATIS動態查詢的實現主要是在iBATIS中使用安全的拼接語句,動態查詢 
  iBATIS比JDBC的優勢之一,安全高效

  iBATIS動態查詢實例:(說明文字在注釋中)

﹤ select  id ="selectAllProducts"  parameterClass ="Product"  resultMap ="ProductResult" ﹥   
 select id,note from Product  
     ﹤ dynamic  prepend ="WHERE" ﹥   
     ﹤!--  isNotNull判斷參數是否存在,Integer類型  --﹥   
          ﹤ isNotNull  property ="id" ﹥   
              ﹤!--  isGreaterThan判斷參數是否大于compareValue,isGreaterEquals是大于等于  --﹥   
              ﹤ isGreaterThan  prepend =" and "  property ="id"  compareValue ="0" ﹥   
             id = #id#  
              ﹤/ isGreaterThan ﹥   
          ﹤/ isNotNull ﹥   
          ﹤!--  isNotEmpty判斷字串不為空,isEmpty可以判斷字串為空  --﹥   
          ﹤ isNotEmpty  prepend =" and "  property ="note" ﹥   
          ﹤!--  模糊查詢不能用#,#在是用prepareStatement的?插入參數,$是文本替換  --﹥   
         note like '%$note$%' 
          ﹤/ isNotEmpty ﹥   
      ﹤/ dynamic ﹥   
﹤/ select ﹥ 

  iBATIS動態查詢解釋:

  用Map傳參數

﹤ select  id ="selectAllProducts"  parameterClass ="java.util.HashMap"  resultMap ="ProductResult" ﹥   
  select id,note from Product  
      ﹤ dynamic  prepend ="WHERE" ﹥   
      ﹤!--  isPropertyAvailable判斷屬性是否有效  --﹥   
         ﹤ isPropertyAvailable  property ="id" ﹥   
           ﹤ isNotNull  property ="id" ﹥   
               ﹤!--  isLessThan判斷參數是否小于compareValue,isLessEquals是小于等于  --﹥   
               ﹤ isLessThan  prepend =" and "  property ="id"  compareValue ="10" ﹥   
              id = #id#  
               ﹤/ isLessThan ﹥   
           ﹤/ isNotNull ﹥   
         ﹤/ isPropertyAvailable ﹥   
       ﹤/ dynamic ﹥   
 ﹤/ select ﹥ 

  iBATIS動態查詢幾個常用屬性

  ﹤ isPropertyAvailable ﹥  屬性是存在

  ﹤ isNotPropertyAvailable ﹥  屬性不存在

  ﹤ isNull ﹥  屬性值是null

  ﹤ isEmpty ﹥  判斷Collection.size ﹤ 1 或String.length()﹤1

  ﹤isEqual ﹥  等于

  ﹤ isNotEqual ﹥  不等于

  ﹤ isGreaterThan ﹥  大于

  ﹤ isGreaterEqual ﹥  大于等于

  ﹤ isLessThan ﹥  小于

  ﹤ isLessEqual ﹥  小于等于 

  iBATIS動態查詢的相關信息就向你介紹到這里,希望對你了解iBATIS動態查詢有所幫助。


可愛的小毅 2009-10-19 13:02 發表評論
]]>
Ibatis之LIKE用法http://m.tkk7.com/xiaoyi/articles/298759.html可愛的小毅可愛的小毅Sun, 18 Oct 2009 09:03:00 GMThttp://m.tkk7.com/xiaoyi/articles/298759.htmlhttp://m.tkk7.com/xiaoyi/comments/298759.htmlhttp://m.tkk7.com/xiaoyi/articles/298759.html#Feedback2http://m.tkk7.com/xiaoyi/comments/commentRss/298759.htmlhttp://m.tkk7.com/xiaoyi/services/trackbacks/298759.html     網上搜了一下ibatis的關于like的使用
一般使用﹤!--  模糊查詢不能用#,#在是用prepareStatement的?插入參數,$是文本替換  --﹥   
         note like '%$note$%' 


其他用法:

SELECT *  
      FROM user 
      WHERE username like '%'  || #username# || '%'
 


       其實上面的語句是正對Oracle 的,對于不同數據字符串連接符不一樣。現列舉mysql和SQLServer如下:

      Mysql:

SELECT *  
      FROM user 
      WHERE username like CONCAT('%', #username#, '%')
 


      SQLServer:
SELECT *  
      FROM user 
      WHERE username like '%' + #username# +  '%'
 

 

-----------------------------------------------------------------------------------------------------------------------------

      關于數據庫字符串連接符簡單列舉我使用過的一些數據庫如下:

 

Oracle SQLServer Mysql DB2
|| 或 CONCAT() + CONCAT() || 或 CONCAT()

 

      更多其他數據庫的字符串連接符google!



可愛的小毅 2009-10-18 17:03 發表評論
]]>
小毅整理之------更改MySql數據庫root用戶的密碼http://m.tkk7.com/xiaoyi/articles/285432.html可愛的小毅可愛的小毅Fri, 03 Jul 2009 18:19:00 GMThttp://m.tkk7.com/xiaoyi/articles/285432.htmlhttp://m.tkk7.com/xiaoyi/comments/285432.htmlhttp://m.tkk7.com/xiaoyi/articles/285432.html#Feedback0http://m.tkk7.com/xiaoyi/comments/commentRss/285432.htmlhttp://m.tkk7.com/xiaoyi/services/trackbacks/285432.html  在...mysql\bin 目錄下
方式一:
   mysqladmin -uroot -p123456 password 456789 
 
   用戶名是 root   舊密碼是:123456    新密碼是:456789 
方式二:
mysqladmin -uroot -p password 新密碼
然后 出現Enter Password:讓你輸入舊密碼連接mysql數據進行更改
回車 更改密碼成功!



可愛的小毅 2009-07-04 02:19 發表評論
]]>
小毅收藏之---Mysql常用命令幾面http://m.tkk7.com/xiaoyi/articles/283671.html可愛的小毅可愛的小毅Tue, 23 Jun 2009 01:15:00 GMThttp://m.tkk7.com/xiaoyi/articles/283671.htmlhttp://m.tkk7.com/xiaoyi/comments/283671.htmlhttp://m.tkk7.com/xiaoyi/articles/283671.html#Feedback0http://m.tkk7.com/xiaoyi/comments/commentRss/283671.htmlhttp://m.tkk7.com/xiaoyi/services/trackbacks/283671.html

整理By:leo,感謝leo

 轉載于:http://jiajun.javaeye.com/blog/411079

測試環境:mysql 5.0.45
【注:可以在mysql中通過mysql> SELECT VERSION();來查看數據庫版本】

 

 

 

一、連接MYSQL。

格式: mysql -h主機地址 -u用戶名 -p用戶密碼

1、連接到本機上的MYSQL。

首先打開DOS窗口,然后進入目錄mysql\bin,再鍵入命令mysql -u root -p,回車后提示你輸密碼.注意用戶名前可以有空格也可以沒有空格,但是密碼前必須沒有空格,否則讓你重新輸入密碼.

如果剛安裝好MYSQL,超級用戶root是沒有密碼的,故直接回車即可進入到MYSQL中了,MYSQL的提示符是: mysql>

2、連接到遠程主機上的MYSQL。假設遠程主機的IP為:110.110.110.110,用戶名為root,密碼為abcd123。則鍵入以下命令:

mysql -h110.110.110.110 -u root -p 123;(注:u與root之間可以不用加空格,其它也一樣)

3、退出MYSQL命令: exit (回車)

 

二、修改密碼。

格式:mysqladmin -u用戶名 -p舊密碼 password 新密碼

1、給root加個密碼ab12。首先在DOS下進入目錄mysql\bin,然后鍵入以下命令

mysqladmin -u root -password ab12

注:因為開始時root沒有密碼,所以-p舊密碼一項就可以省略了。

2、再將root的密碼改為djg345。

mysqladmin -u root -p ab12 password djg345

 

三、增加新用戶。
(注意:和上面不同,下面的因為是MYSQL環境中的命令,所以后面都帶一個分號作為命令結束符)

格式:grant select on 數據庫.* to 用戶名@登錄主機 identified by “密碼”

1、增加一個用戶test1密碼為abc,讓他可以在任何主機上登錄,并對所有數據庫有查詢、插入、修改、刪除的權限。首先用root用戶連入MYSQL,然后鍵入以下命令:

grant select,insert,update,delete on *.* to test1@”%” Identified by “abc”;

但增加的用戶是十分危險的,你想如某個人知道test1的密碼,那么他就可以在internet上的任何一臺電腦上登錄你的mysql數據庫并對你的數據可以為所欲為了,解決辦法見2。

2、增加一個用戶test2密碼為abc,讓他只可以在localhost上登錄,并可以對數據庫mydb進行查詢、插入、修改、刪除的操作(localhost指本地主機,即MYSQL數據庫所在的那臺主機),

這樣用戶即使用知道test2的密碼,他也無法從internet上直接訪問數據庫,只能通過MYSQL主機上的web頁來訪問了。

grant select,insert,update,delete on mydb.* to test2@localhost identified by “abc”;

如果你不想test2有密碼,可以再打一個命令將密碼消掉。

grant select,insert,update,delete on mydb.* to test2@localhost identified by “”;

下篇我是MYSQL中有關數據庫方面的操作。注意:你必須首先登錄到MYSQL中,以下操作都是在MYSQL的提示符下進行的,而且每個命令以分號結束。

一、操作技巧

1、如果你打命令時,回車后發現忘記加分號,你無須重打一遍命令,只要打個分號回車就可以了。

也就是說你可以把一個完整的命令分成幾行來打,完后用分號作結束標志就OK。

2、你可以使用光標上下鍵調出以前的命令。

二、顯示命令

1、顯示當前數據庫服務器中的數據庫列表:

mysql> SHOW DATABASES;

注意:mysql庫里面有MYSQL的系統信息,我們改密碼和新增用戶,實際上就是用這個庫進行操作。

2、顯示數據庫中的數據表:

mysql> USE 庫名;
mysql> SHOW TABLES;

3、顯示數據表的結構:

mysql> DESCRIBE 表名;

4、建立數據庫:

mysql> CREATE DATABASE 庫名;

5、建立數據表:

mysql> USE 庫名;
mysql> CREATE TABLE 表名 (字段名 VARCHAR(20), 字段名 CHAR(1));

6、刪除數據庫:

mysql> DROP DATABASE 庫名;

7、刪除數據表:

mysql> DROP TABLE 表名;

8、將表中記錄清空:

mysql> DELETE FROM 表名;

9、顯示表中的記錄:

mysql> SELECT * FROM 表名;

10、往表中插入記錄:

mysql> INSERT INTO 表名 VALUES (”hyq”,”M”);

11、更新表中數據:

mysql-> UPDATE 表名 SET 字段名1=’a',字段名2=’b’ WHERE 字段名3=’c';

12、用文本方式將數據裝入數據表中:

mysql> LOAD DATA LOCAL INFILE “D:/mysql.txt” INTO TABLE 表名;

13、導入.sql文件命令:

mysql> USE 數據庫名;
mysql> SOURCE d:/mysql.sql;

14、命令行修改root密碼:

mysql> UPDATE mysql.user SET password=PASSWORD(’新密碼’) WHERE User=’root’;
mysql> FLUSH PRIVILEGES;

15、顯示use的數據庫名:

mysql> SELECT DATABASE();

16、顯示當前的user:

mysql> SELECT USER();

三、一個建庫和建表以及插入數據的實例

drop database if exists school; //如果存在SCHOOL則刪除

create database school; //建立庫SCHOOL

use school; //打開庫SCHOOL

create table teacher //建立表TEACHER
(
id int(3) auto_increment not null primary key,
name char(10) not null,
address varchar(50) default ‘深圳’,
year date
); //建表結束

//以下為插入字段
insert into teacher values(”,’allen’,'大連一中’,'1976-10-10′);
insert into teacher values(”,’jack’,'大連二中’,'1975-12-23′);

如果你在mysql提示符鍵入上面的命令也可以,但不方便調試。

(1)你可以將以上命令原樣寫入一個文本文件中,假設為school.sql,然后復制到c:\\下,并在DOS狀態進入目錄\\mysql\\bin,然后鍵入以下命令:

mysql -uroot -p密碼 < c:\\school.sql

如果成功,空出一行無任何顯示;如有錯誤,會有提示。(以上命令已經調試,你只要將//的注釋去掉即可使用)。

(2)或者進入命令行后使用 mysql> source c:\\school.sql; 也可以將school.sql文件導入數據庫中。

四、將文本數據轉到數據庫中

1、文本數據應符合的格式:字段數據之間用tab鍵隔開,null值用\\n來代替.例:

3 rose 大連二中 1976-10-10

4 mike 大連一中 1975-12-23

假設你把這兩組數據存為school.txt文件,放在c盤根目錄下。

2、數據傳入命令 load data local infile “c:\\school.txt” into table 表名;

注意:你最好將文件復制到\\mysql\\bin目錄下,并且要先用use命令打表所在的庫。

 

五、備份數據庫:(命令在DOS的\\mysql\\bin目錄下執行)

1.導出整個數據庫

導出文件默認是存在mysql\bin目錄下

mysqldump -u 用戶名 -p 數據庫名 > 導出的文件名

mysqldump -u user_name -p123456 database_name > outfile_name.sql

2.導出一個表

mysqldump -u 用戶名 -p 數據庫名 表名> 導出的文件名

mysqldump -u user_name -p database_name table_name > outfile_name.sql

3.導出一個數據庫結構

mysqldump -u user_name -p -d –add-drop-table database_name > outfile_name.sql

-d 沒有數據 –add-drop-table 在每個create語句之前增加一個drop table

4.帶語言參數導出

mysqldump -uroot -p –default-character-set=latin1 –set-charset=gbk –skip-opt database_name > outfile_name.sql



可愛的小毅 2009-06-23 09:15 發表評論
]]>
小毅整理之------SQLITE入門至精通http://m.tkk7.com/xiaoyi/articles/281204.html可愛的小毅可愛的小毅Wed, 10 Jun 2009 12:08:00 GMThttp://m.tkk7.com/xiaoyi/articles/281204.htmlhttp://m.tkk7.com/xiaoyi/comments/281204.htmlhttp://m.tkk7.com/xiaoyi/articles/281204.html#Feedback1http://m.tkk7.com/xiaoyi/comments/commentRss/281204.htmlhttp://m.tkk7.com/xiaoyi/services/trackbacks/281204.html菜鳥入門
1。從www.sqlite.org下載SQLite 3.3.4的版本
   為了方便,我把它解壓了,就一個SQLite3.exe,放入Windows目錄下。
   Cmd 進入命令行
   1)
   創建數據庫文件:
   >SQLite3 d:\test.db 回車
   就生成了一個test.db在d盤。
   這樣同時也SQLite3掛上了這個test.db
   2)
   用.help可以看看有什么命令
   >.help 回車即可
   3)可以在這里直接輸入SQL語句創建表格 用;結束,然后回車就可以看到了
   4)看看有創建了多少表
   >.tables
   5)看表結構
   >.schema 表名
   6)看看目前的數據庫
   >.database
   7)如果要把查詢輸出到文件
   >.output 文件名
   > 查詢語句;
   查詢結果就輸出到了文件c:\query.txt

   把查詢結果用屏幕輸出
   >.output stdout

   8)把表結構輸出,同時索引也會輸出
     .dump 表名
   9)退出
   >.exit 或者.quit

2。從http://sqlite.phxsoftware.com/下載Ado.net驅動。
   下載了安裝,在安裝目錄中存在System.Data.SQLite.dll
    我們只需要拷貝這個文件到引用目錄,并添加引用即可對SQLite數據庫操作了
   所有的Ado.net對象都是以SQLite開頭的,比如SQLiteConnection
   連接串只需要如下方式
   Data Source=d:\test.db 或者DataSource=test.db--應用在和應用程序或者.net能夠自動找到的目錄
   剩下的就很簡單了~~

3。SQL語法
   由于以前用SQLServer或者ISeries,所以DDL的語法很汗顏
   1)創建一個單個Primary Key的table
   CREATE TABLE  [Admin] (
 [UserName] [nvarchar] (20)   PRIMARY KEY NOT NULL ,
 [Password] [nvarchar] (50)   NOT NULL ,
 [Rank] [smallint] NOT NULL ,
 [MailServer] [nvarchar] (50)   NOT NULL ,
 [MailUser] [nvarchar] (50)   NOT NULL ,
 [MailPassword] [nvarchar] (50)   NOT NULL ,
 [Mail] [nvarchar] (50)   NOT NULL
   ) ;
   2)創建一個多個Primary Key的table
   CREATE TABLE  [CodeDetail] (
 [CdType] [nvarchar] (10)  NOT NULL ,
 [CdCode] [nvarchar] (20)  NOT NULL ,
 [CdString1] [ntext]   NOT NULL ,
 [CdString2] [ntext]   NOT NULL ,
 [CdString3] [ntext]   NOT NULL,
  PRIMARY KEY (CdType,CdCode)
        
   ) ;
   3)創建索引
   CREATE  INDEX [IX_Account] ON  [Account]([IsCheck], [UserName]);
  
   還可以視圖等等。
4.還有很有用的SQL
  Select * from Sqlite_master
  Select datetime('now')
  Select date('now')
  Select time('now')
 

SQLite內建函數表

算術函數

abs(X)

返回給定數字表達式的絕對值。

max(X,Y[,...])

返回表達式的最大值。

min(X,Y[,...])

返回表達式的最小值。

random(*)

返回隨機數。

round(X[,Y])

返回數字表達式并四舍五入為指定的長度或精度。

字符處理函數

length(X)

返回給定字符串表達式的字符個數。

lower(X)

將大寫字符數據轉換為小寫字符數據后返回字符表達式。

upper(X)

返回將小寫字符數據轉換為大寫的字符表達式。

substr(X,Y,Z)

返回表達式的一部分。

randstr()

 

quote(A)

 

like(A,B)

確定給定的字符串是否與指定的模式匹配。

glob(A,B)

 

條件判斷函數

coalesce(X,Y[,...])

 

ifnull(X,Y)

 

nullif(X,Y)

 

集合函數

avg(X)

返回組中值的平均值。

count(X)

返回組中項目的數量。

max(X)

返回組中值的最大值。

min(X)

返回組中值的最小值。

sum(X)

返回表達式中所有值的和。

其他函數

typeof(X)

返回數據的類型。

last_insert_rowid()

返回最后插入的數據的ID

sqlite_version(*)

返回SQLite的版本。

change_count()

返回受上一語句影響的行數。

last_statement_change_count()

 


oh,還有就是看到有人說,好像成批插入的時候,啟動事務,比不啟動事務快n倍
還有就是盡量使用參數化的SQL,估計和商用DB一樣能夠自動Prepare.

===========

sqlite可以在shell/dos command底下直接執行命令:

sqlite3 film.db "select * from film;"

輸出 HTML 表格:

sqlite3 -html film.db "select * from film;"

將數據庫「倒出來」:

sqlite3 film.db ".dump" > output.sql

利用輸出的資料,建立一個一模一樣的數據庫(加上以上指令,就是標準的SQL數據庫備份了):

sqlite3 film.db < output.sql

在大量插入資料時,你可能會需要先打這個指令:

begin;

插入完資料后要記得打這個指令,資料才會寫進數據庫中:

commit;

SQLITE深入------常見問題

如何建立自動增長字段?

簡短回答:聲明為 INTEGER PRIMARY KEY 的列將會自動增長。

長一點的答案: 如果你聲明表的一列為 INTEGER PRIMARY KEY,那么, 每當你在該列上插入一NULL值時, NULL自動被轉換為一個比該列中最大值大1的一個整數,如果表是空的, 將會是1。 (如果是最大可能的主鍵 9223372036854775807,那個,將鍵值將是隨機未使用的數。) 如,有下列表:

CREATE TABLE t1(
a INTEGER PRIMARY KEY,
b INTEGER
);
在該表上,下列語句

INSERT INTO t1 VALUES(NULL,123);
在邏輯上等價于:

INSERT INTO t1 VALUES((SELECT max(a) FROM t1)+1,123);
有一個新的API叫做 sqlite3_last_insert_rowid(), 它將返回最近插入的整數值。注意該整數會比表中該列上的插入之前的最大值大1。 該鍵值在當前的表中是唯一的。但有可能與已從表中刪除的值重疊。 要想建立在整個表的生命周期中唯一的鍵值,需要在 INTEGER PRIMARY KEY 上增加AUTOINCREMENT聲明。那么,新的鍵值將會比該表中曾能存在過的最大值大1。 如果最大可能的整數值在數據表中曾經存在過,INSERT將會失敗, 并返回SQLITE_FULL錯誤代碼。

多個應用程序或一個應用程序的多個實例可以同時訪問同一個數據庫文件嗎?

多個進程可同時打開同一個數據庫。多個進程可以同時進行SELECT 操作,但在任一時刻,只能有一個進程對數據庫進行更改。

SQLite使用讀、寫鎖控制對數據庫的訪問。(在Win95/98/ME等不支持讀、 寫鎖的系統下,使用一個概率性的模擬來代替。)但使用時要注意: 如果數據庫文件存放于一個NFS文件系統上,這種鎖機制可能不能正常工作。 這是因為 fcntl() 文件鎖在很多NFS上沒有正確的實現。 在可能有多個進程同時訪問數據庫的時候,應該避免將數據庫文件放到NFS上。 在Windows上,Microsoft的文檔中說:如果使用 FAT 文件系統而沒有運行 share.exe 守護進程,那么鎖可能是不能正常使用的。那些在Windows上有很多經驗的人告訴我: 對于網絡文件,文件鎖的實現有好多Bug,是靠不住的。如果他們說的是對的, 那么在兩臺或多臺Windows機器間共享數據庫可能會引起不期望的問題。

我們意識到,沒有其它嵌入式的 SQL 數據庫引擎能象 SQLite 這樣處理如此多的并發。SQLite允許多個進程同時打開一個數據庫, 同時讀一個數據庫。當有任何進程想要寫時,它必須在更新過程中鎖住數據庫文件。 但那通常只是幾毫秒的時間。其它進程只需等待寫進程干完活結束。 典型地,其它嵌入式的SQL數據庫引擎同時只允許一個進程連接到數據庫。

但是,Client/Server數據庫引擎(如 PostgreSQL, MySQL, 或 Oracle) 通常支持更高級別的并發,并且允許多個進程同時寫同一個數據庫。 這種機制在Client/Server結構的數據庫上是可能的, 因為總是有一個單一的服務器進程很好地控制、協調對數據庫的訪問。 如果你的應用程序需要很多的并發,那么你應該考慮使用一個Client/Server 結構的數據庫。但經驗表明,很多應用程序需要的并發,往往比其設計者所想象的少得多。

當SQLite試圖訪問一個被其它進程鎖住的文件時,缺省的行為是返回 SQLITE_BUSY。 可以在C代碼中使用 sqlite3_busy_handler() 或 sqlite3_busy_timeout() API 函數調整這一行為。

在SQLite數據庫中如何列出所有的表和索引?

如果你運行 sqlite3 命令行來訪問你的數據庫,可以鍵入 “.tables”來獲得所有表的列表?;蛘?,你可以輸入 “.schema” 來看整個數據庫模式,包括所有的表的索引。 輸入這些命令,后面跟一個LIKE模式匹配可以限制顯示的表。

在一個 C/C++ 程序中(或者腳本語言使用 Tcl/Ruby/Perl/Python 等) 你可以在一個特殊的名叫 SQLITE_MASTER 上執行一個SELECT查詢以獲得所有 表的索引。每一個 SQLite 數據庫都有一個叫 SQLITE_MASTER 的表, 它定義數據庫的模式。 SQLITE_MASTER 表看起來如下:

CREATE TABLE sqlite_master (
type TEXT,
name TEXT,
tbl_name TEXT,
rootpage INTEGER,
sql TEXT
);
對于表來說,type 字段永遠是 'table',name 字段永遠是表的名字。所以,要獲得數據庫中所有表的列表, 使用下列SELECT語句:

SELECT name FROM sqlite_master
WHERE type='table'
ORDER BY name;
對于索引,type 等于 'index', name 則是索引的名字,tbl_name 是該索引所屬的表的名字。 不管是表還是索引,sql 字段是原先用 CREATE TABLE 或 CREATE INDEX 語句創建它們時的命令文本。對于自動創建的索引(用來實現 PRIMARY KEY 或 UNIQUE 約束),sql字段為NULL。

SQLITE_MASTER 表是只讀的。不能對它使用 UPDATE、INSERT 或 DELETE。 它會被 CREATE TABLE、CREATE INDEX、DROP TABLE 和 DROP INDEX 命令自動更新。

臨時表不會出現在 SQLITE_MASTER 表中。臨時表及其索引和觸發器存放在另外一個叫 SQLITE_TEMP_MASTER 的表中。SQLITE_TEMP_MASTER 跟 SQLITE_MASTER 差不多, 但它只是對于創建那些臨時表的應用可見。如果要獲得所有表的列表, 不管是永久的還是臨時的,可以使用類似下面的命令:

SELECT name FROM
   (SELECT * FROM sqlite_master UNION ALL
    SELECT * FROM sqlite_temp_master)
WHERE type='table'
ORDER BY name

在SQLite中,VARCHAR字段最長是多少?

SQLite 不強制 VARCHAR 的長度。 你可以在 SQLITE 中聲明一個 VARCHAR(10),SQLite還是可以很高興地允許你放入500個字符。 并且這500個字符是原封不動的,它永遠不會被截斷。

SQLite支持二進制大對象嗎?

SQLite 3.0 及以后版本允許你在任何列中存儲 BLOB 數據。 即使該列被聲明為其它類型也可以。

在SQLite中,如何在一個表上添加或刪除一列?

SQLite 有有限地 ALTER TABLE 支持。你可以使用它來在表的末尾增加一列,可更改表的名稱。 如果需要對表結構做更復雜的改變,則必須重新建表。 重建時可以先將已存在的數據放到一個臨時表中,刪除原表, 創建新表,然后將數據從臨時表中復制回來。

如,假設有一個 t1 表,其中有 "a", "b", "c" 三列, 如果要刪除列 c ,以下過程描述如何做:

BEGIN TRANSACTION;
CREATE TEMPORARY TABLE t1_backup(a,b);
INSERT INTO t1_backup SELECT a,b FROM t1;
DROP TABLE t1;
CREATE TABLE t1(a,b);
INSERT INTO t1 SELECT a,b FROM t1_backup;
DROP TABLE t1_backup;
COMMIT;

在數據庫中刪除了很多數據,但數據庫文件沒有變小,是Bug嗎?

不是。當你從SQLite數據庫中刪除數據時, 未用的磁盤空間將會加入一個內部的“自由列表”中。 當你下次插入數據時,這部分空間可以重用。磁盤空間不會丟失, 但也不會返還給操作系統。

如果刪除了大量數據,而又想縮小數據庫文件占用的空間,執行 VACUUM 命令。 VACUUM 將會從頭重新組織數據庫。這將會使用數據庫有一個空的“自由鏈表”, 數據庫文件也會最小。但要注意的是,VACUUM 的執行會需要一些時間 (在SQLite開發時,在Linux上,大約每M字節需要半秒種),并且, 執行過程中需要原數據庫文件至多兩倍的臨時磁盤空間。

對于 SQLite 3.1版本,一個 auto-vacumm 模式可以替代 VACUUM 命令。 可以使用 auto_vacuum pragma 打開。

SQLITE_SCHEMA error是什么錯誤?為什么會出現該錯誤?

當一個準備好的(prepared)SQL語句不再有效或者無法執行時, 將返回一個 SQLITE_SCHEMA 錯誤。發生該錯誤時,SQL語句必須使用 sqlite3_prepare() API來重新編譯. 在 SQLite 3 中, 一個 SQLITE_SCHEMA 錯誤只會發生在用 sqlite3_prepare()/sqlite3_step()/sqlite3_finalize() API 執行 SQL 時。而不會發生在使用 sqlite3_exec()時。 在版本2中不是這樣。

準備好的語句失效的最通常原因是:在語句準備好后, 數據庫的模式又被修改了。另外的原因會發生在:

數據庫離線:DETACHed.
數據庫被 VACUUMed
一個用戶存儲過程定義被刪除或改變。
一個 collation 序列定義被刪除或改變。
認證函數被改變。
在所有情況下,解決方法是重新編譯并執行該SQL語句。 因為一個已準備好的語句可以由于其它進程改變數據庫模式而失效, 所有使用 sqlite3_prepare()/sqlite3_step()/sqlite3_finalize() API 的代碼都應準備處理 SQLITE_SCHEMA 錯誤。下面給出一個例子:


    int rc;
    sqlite3_stmt *pStmt;
    char zSql[] = "SELECT .....";

    do {
      /* Compile the statement from SQL. Assume success. */
      sqlite3_prepare(pDb, zSql, -1, &pStmt, 0);

      while( SQLITE_ROW==sqlite3_step(pStmt) ){
        /* Do something with the row of available data */
      }

      /* Finalize the statement. If an SQLITE_SCHEMA error has
      ** occured, then the above call to sqlite3_step() will have
      ** returned SQLITE_ERROR. sqlite3_finalize() will return
      ** SQLITE_SCHEMA. In this case the loop will execute again.
      */
      rc = sqlite3_finalize(pStmt);
    } while( rc==SQLITE_SCHEMA );

 

如何在字符串中使用單引號(')?

SQL 標準規定,在字符串中,單引號需要使用逃逸字符,即在一行中使用兩個單引號。在這方面 SQL 用起來類似 Pascal 語言。 SQLite 尊循標準。如:

    INSERT INTO xyz VALUES('5 O''clock');


Sqlite中如何返回本地化當前時間?
在做ClinicOS的時候遇到一個問題,在保存病歷登記時間時,我使用了“CURRENT_TIMESTAMP”,但這有個問題,它返回的是UTC Time,這對我們中國人沒啥用,一直希望能想辦法將它轉為localtime。今天剛好有空,所以去查了查Sqlite的Mail List,果然也有人遇到了這個問題,我從一篇名為《translate time comparison statement》(http://www.mail-archive.com/sqlite-users@sqlite.org/msg12350.html)中看到這樣的回復:

Mark Wyszomierski wrote:

You may want

WHERE julianday(date('now')) - julianday(date(arrival_date)) > 7

Mark,

You should still use the 'localtime' modifier on the 'now' value if your timestamps are local time since 'now' always returns UTC times.

WHERE julianday(date('now', 'localtime')) - julianday(date(arrival_date)) > 7

嘿嘿,看來如果想得到一個符合本機區域設置的當前時間,必須用date函數來轉換,
但date只函數只返回當前日期,而我需要的是返回當前日期及時間,所以這里把它換成datetime函數,即:
datetime(CURRENT_TIMESTAMP,'localtime')

以下是sqlite下測試的輸出信息:
sqlite> select CURRENT_TIMESTAMP;
2006-06-18 09:23:36
sqlite> select datetime(CURRENT_TIMESTAMP,'localtime');
2006-06-18 17:23:44
sqlite>

SQLITE分頁

剛開始的時候沒注意語法
后來才發現,原來用SQLite分頁是世界上最簡單的。
如果我要去11-20的Account表的數據
Select * From Account Limit 9 Offset 10;
以上語句表示從Account表獲取數據,跳過10行,取9行

嗯,我覺得這個特性足夠讓很多的web中型網站使用這個了。

也可以這樣寫 select * from account limit10,9和上面的的效果一樣。
這種寫法MySQL也支持。

 

SQLite不同于其他大部分的SQL數據庫引擎,因為它的首要設計目標就是簡單化:

易于管理
易于使用
易于嵌入其他大型程序
易于維護和配置
許多人喜歡SQLite因為它的小巧和快速. 但是這些特性只是它的部分優點, 使用者還會發現SQLite是非常穩定的. 出色的穩定性源于它的簡單, 越簡單就越不容易出錯. 除了上述的簡單、小巧和穩定性外, 最重要的在于SQLite力爭做到簡單化.

簡單化在一個數據庫引擎中可以說是一個優點, 但也可能是個缺點, 主要決定于你想要做什么. 為了達到簡單化, SQLite省略了一些人們認為比較有用的特性, 例如高并發性、 嚴格的存取控制、 豐富的內置功能、 存儲過程、復雜的SQL語言特性、 XML以及Java的擴展, 超大的萬億級別的數據測量等等. 如果你需要使用上述的這些特性并且不介意它們的復雜性, 那么SQLite也許就不適合你了. SQLite沒有打算作為一個企業級的數據庫引擎, 也并不打算和Oracle或者PostgreSQL競爭.

僅憑經驗來說SQLite適用于以下場合: 當你更看中簡單的管理、使用和維護數據庫, 而不是那些企業級數據庫提供的不計其數的復雜功能的時候,使用SQLite是一個比較明智的選擇. 事實也證明, 人們在許多情況下已經清楚的認識到簡單就是最好的選擇.

SQLite最佳試用場合
網站

作為數據庫引擎SQLite適用于中小規模流量的網站(也就是說, 99.9%的網站). SQLite可以處理多少網站流量在于網站的數據庫有多大的壓力. 通常來說, 如果一個網站的點擊率少于100000次/天的話, SQLite是可以正常運行的. 100000次/天是一個保守的估計, 不是一個準確的上限. 事實證明, 即使是10倍的上述流量的情況下SQLite依然可以正常運行.

嵌入式設備和應用軟件

因為SQLite數據庫幾乎不需要管理, 因此對于那些無人值守運行或無人工技術支持的設備或服務, SQLite是一個很好的選擇. SQLite能很好的適用于手機, PDA, 機頂盒, 以及其他儀器. 作為一個嵌入式數據庫它也能夠很好的應用于客戶端程序.

應用程序文件格式

SQLite作為桌面應用程序的本地磁盤文件格式取得了巨大成功.例如金融分析工具、CAD 包、檔案管理程序等等. 一般的數據庫打開操作需要調用sqlite3_open()函數,并且標記一個顯式本地事務的起始點(BEGIN TRANSACTION)來保證以獨占的方式得到文件的內容. 文件保存將執行一個提交(COMMIT)同時標記另一個顯式本地事務起始點. 這種事務處理的作用就是保證對于應用程序數據文件的更新是原子的、持久的、獨立的和一致的.

數據庫里可以加入一些臨時的觸發器,用來把所有的改變記錄在一張臨時的取消/重做日志表中. 當用戶按下取消/重做按鈕的時候這些改變將可以被回滾. 應用這項技術實現一個無限級的取消/重做功能只需要編寫很少的代碼.

替代某些特別的文件格式

許多程序使用fopen(), fread(), 或 fwrite()函數創建和管理一些自定義的文件用來保存數據. 使用SQLite替代這些自定義的文件格式將是一種很好的選擇.

內部的或臨時的數據庫

對于那些有大量的數據需要用不同的方式篩選分類的程序, 相對于編寫同樣功能的代碼, 如果你把數據讀入一個內存中的SQLite數據庫, 然后使用連接查詢和ORDER BY子句按一定的順序和排列提取需要的數據, 通常會更簡單和快速. 按照上述的方法使用內嵌的SQLite數據庫將會使程序更富有靈活性, 因為添加新的列或索引不用重寫任何查詢語句.

命令行數據集分析工具

有經驗的SQL用戶可以使用SQLite命令行程序去分析各種混雜的數據集. 原是數據可以從CSV(逗號分隔值文件)文件中導入, 然后被切分產生無數的綜合數據報告. 可能得用法包括網站日志分析, 運動統計分析, 編輯規劃標準, 分析試驗結果.

當然你也可以用企業級的客戶端/服務器數據庫來做同樣的事情. 在這種情況下使用SQLite的好處是: SQLite的部署更為簡單并且結果數據庫是一個單獨的文件, 你可以把它存儲在軟盤或者優盤或者直接通過email發給同事.

在Demo或測試版的時候作為企業級數據庫的替代品

如果你正在編寫一個使用企業級數據庫引擎的客戶端程序, 使用一個允許你連接不同SQL數據庫引擎的通用型數據庫后臺將是很有意義的. 其更大的意義在于將SQLite數據庫引擎靜態的連接到客戶端程序當中,從而內嵌SQLite作為混合的數據庫支持. 這樣客戶端程序就可以使用SQLite數據庫文件做獨立的測試或者驗證.

本文來自: (www.91linux.com) 詳細出處參考:http://www.91linux.com/html/article/database/sqlite/200812/12-14611.html

 

數據庫教學

因為SQLite的安裝和使用非常的簡單(安裝過程幾乎忽略不計, 只需要拷貝SQLite源代碼或sqlite.exe可執行文件到目標主機, 然后直接運行就可以) 所以它非常適合用來講解SQL語句. 同學們可以非常簡單的創建他們喜歡的數據庫, 然后通過電子郵件發給老師批注或打分. 對于那些感興趣怎樣實現一個關系型數據庫管理系統(RDBMS)的高層次的學生, 按照模塊化設計且擁有很好的注釋和文檔的SQLite源代碼, 將為他們打下良好的基礎. 這并不是說SQLite就是如何實現其他數據庫引擎的精確模型, 但是很適合學生們了解SQLite是如何快速工作的, 從而掌握其他數據庫系統的設計實現原則.

試驗SQL語言的擴展

SQLite簡單且模塊化的設計使得它可以成為一個用來測試數據庫語言特性或新想法的優秀的原型平臺.

哪些場合適合使用其他的關系型數據庫管理系統(RDBMS)
客戶端/服務器程序

 

如果你有許多的客戶端程序要通過網絡訪問一個共享的數據庫, 你應當考慮用一個客戶端/服務器數據庫來替代SQLite. SQLite可以通過網絡文件系統工作, 但是因為和大多數網絡文件系統都存在延時, 因此執行效率不會很高. 此外大多數網絡文件系統在實現文件邏輯鎖的方面都存在著bug(包括Unix 和windows). 如果文件鎖沒有正常的工作, 就可能出現在同一時間兩個或更多的客戶端程序更改同一個數據庫的同一部分, 從而導致數據庫出錯. 因為這些問題是文件系統執行的時候本質上存在的bug, 因此SQLite沒有辦法避免它們.

好的經驗告訴我們, 應該避免在許多計算機需要通過一個網絡文件系統同時訪問同一個數據庫的情況下使用SQLite.

高流量網站

SQLite通常情況下用作一個網站的后臺數據庫可以很好的工作. 但是如果你的網站的訪問量大到你開始考慮采取分布式的數據庫部署, 那么你應當毫不猶豫的考慮用一個企業級的客戶端/服務器數據庫來替代SQLite.

超大的數據集

當你在SQLite中開始一個事務處理的時候(事務處理會在任何寫操作發生之前產生, 而不是必須要顯示的調用BEGIN...COMMIT), 數據庫引擎將不得不分配一小塊臟頁(文件緩沖頁面)來幫助它自己管理回滾操作. 每1MB的數據庫文件SQLite需要256字節. 對于小型的數據庫這些空間不算什么, 但是當數據庫增長到數十億字節的時候, 緩沖頁面的尺寸就會相當的大了. 如果你需要存儲或修改幾十GB的數據, 你應該考慮用其他的數據庫引擎.

高并發訪問

SQLite對于整個數據庫文件進行讀取/寫入鎖定. 這意味著如果任何進程讀取了數據庫中的某一部分, 其他所有進程都不能再對該數據庫的任何部分進行寫入操作. 同樣的, 如果任何一個進程在對數據庫進行寫入操作, 其他所有進程都不能再讀取該數據庫的任何部分. 對于大多數情況這不算是什么問題. 在這些情況下每個程序使用數據庫的時間都很短暫, 并且不會獨占, 這樣鎖定至多會存在十幾毫秒. 但是如果有些程序需要高并發, 那么這些程序就需要尋找其他的解決方案了




可愛的小毅 2009-06-10 20:08 發表評論
]]>
小毅總結之--->sql語句查詢出重復記錄http://m.tkk7.com/xiaoyi/articles/239506.html可愛的小毅可愛的小毅Sun, 09 Nov 2008 03:24:00 GMThttp://m.tkk7.com/xiaoyi/articles/239506.htmlhttp://m.tkk7.com/xiaoyi/comments/239506.htmlhttp://m.tkk7.com/xiaoyi/articles/239506.html#Feedback0http://m.tkk7.com/xiaoyi/comments/commentRss/239506.htmlhttp://m.tkk7.com/xiaoyi/services/trackbacks/239506.html-- 建表
create table a(
id int primary key auto_increment,
contents varchar(32)
);
--插入測試數據
insert into a values(default,'AA');
insert into a values(default,'BB');
insert into a values(default,'AA');
insert into a values(default,'CC');
insert into a values(default,'BB');
insert into a values(default,'DD');
insert into a values(default,'EE');
insert into a values(default,'FF');
insert into a values(default,'FF');
-- 查出所有重復數據
select id,contents from (
    select * from (select  * from a) aa
        inner join
            (select id idd,contents cons from a) bb
                where aa.id!=bb.idd and aa.contents = bb.cons
) rst order by id asc;

-- 查處重復數據中的一條 如:AA BB FF重復了 只查處一個AA 一個BB 一個FF
select distinct(contents)  from (
select   id,contents  from (
    select * from (select  * from a) aa
        inner join
            (select id idd,contents cons from a) bb
                where aa.id!=bb.idd and aa.contents = bb.cons
) rst order by id asc
) t;

 其他方法1:

select aa.id,aa.contents from a as aa,(select contents from a group by contents HAVING count(*)>1) bb
where aa.contents = bb.contents 

 其他方法2:
select contents from a as aa where (select count(contents) from a as b where aa.contents = b.contents)>1



可愛的小毅 2008-11-09 11:24 發表評論
]]>
Oracle序列http://m.tkk7.com/xiaoyi/articles/238004.html可愛的小毅可愛的小毅Sat, 01 Nov 2008 03:20:00 GMThttp://m.tkk7.com/xiaoyi/articles/238004.htmlhttp://m.tkk7.com/xiaoyi/comments/238004.htmlhttp://m.tkk7.com/xiaoyi/articles/238004.html#Feedback0http://m.tkk7.com/xiaoyi/comments/commentRss/238004.htmlhttp://m.tkk7.com/xiaoyi/services/trackbacks/238004.htmlcreate sequence replay_id
start with 1
increment by 1
nomaxvalue

可愛的小毅 2008-11-01 11:20 發表評論
]]>
主站蜘蛛池模板: 6080午夜一级毛片免费看6080夜福利 | 免费做爰猛烈吃奶摸视频在线观看 | 亚洲av无码专区青青草原| 亚洲免费福利视频| 97亚洲熟妇自偷自拍另类图片| 日本一区午夜艳熟免费| 亚洲国产精品成人久久| 久久精品免费一区二区三区| 亚洲精品在线观看视频| 99久久久国产精品免费蜜臀| 亚洲精品美女久久久久| 18禁网站免费无遮挡无码中文 | 亚洲色欲www综合网| 美女视频黄的全免费视频网站| 性xxxx黑人与亚洲| 精品久久洲久久久久护士免费| 美女视频免费看一区二区| 亚洲综合区小说区激情区| 久操视频免费观看| 亚洲av专区无码观看精品天堂| 全免费a级毛片免费看不卡| 噜噜噜亚洲色成人网站| 亚洲国产a∨无码中文777| 国产精品成人观看视频免费| 亚洲GV天堂无码男同在线观看| 国产精品亚洲综合一区| 蜜桃成人无码区免费视频网站| 亚洲中文字幕乱码一区| 亚洲精品久久久www| 污视频在线免费观看| 在线aⅴ亚洲中文字幕| 亚洲人成网站在线观看青青| 四虎国产精品永久免费网址| 亚洲欧美日韩综合久久久| 在线播放亚洲第一字幕| 波多野结衣中文字幕免费视频| 亚洲AV永久无码精品网站在线观看| 亚洲人成网77777色在线播放| 手机在线看永久av片免费| 成人在线免费视频| 亚洲an日韩专区在线|