在sqlite操作中遇到database is locked
在sql插入新表的时候提示> Function: _SQLite_Exec
--> Query: INSERT INTO temp select * from ch12 where id=5;
--> Error: database is locked
以下是出错的函数部分func peizhi()
_SQLite_Startup ()
$hQuery=_SQLite_Open ($SQLite_Data_Path)
_SQLite_Query(-1,"select * from peizhi where id='2';",$hQuery)
if _SQLite_FetchData($hQuery, $peizhi) = $SQLITE_OK Then
$zhangjie=StringSplit($peizhi,"|")
_SQLite_Close($hQuery)
_SQLite_Shutdown()
If @error=1 Then;判断是否读到间隔符,如果读不到安单章处理,读到进行选择试题
Switch $peizhi
Case 0
GUICtrlSetState($all,$GUI_CHECKED)
GUICtrlSetState($all,$GUI_DISABLE)
GUICtrlSetState($now,$GUI_DISABLE)
case Else
GUICtrlSetState($now,$GUI_CHECKED)
GUICtrlSetState($now,$GUI_DISABLE)
GUICtrlSetState($all,$GUI_DISABLE)
EndSwitch
Else
GUICtrlSetState($now,$GUI_CHECKED)
GUICtrlSetState($now,$GUI_DISABLE)
GUICtrlSetState($all,$GUI_DISABLE)
$zhangjietimu=StringSplit($peizhi,"|")
If $zhangjie <>$zhangjietimu Then MsgBox(0,"提醒","查看配置文件,章节设置和题目设置不一致")
Local $ii ;
For $ii=1 To $zhangjie
Local $sql
_SQLite_Startup ()
$hQuery=_SQLite_Open ($SQLite_Data_Path)
$sql="select * from Testmod where IDs="&$peizhi&";"
; MsgBox(0,"配置读取",$sql) ;测试是否正确读取到模块
_SQLite_Query(-1,$sql,$hQuery)
if _SQLite_FetchData($hQuery, $aRow) = $SQLITE_OK Then
MsgBox(0,"总数2",$aRow&$aRow)
$zshu=$aRow
$mokuai=$aRow
EndIf;模块读取结束得到试题总数和模块名称 为后面选择提供方便
_SQLite_Close($hQuery)
_SQLite_Shutdown()
Local $iii,$jjj,$ti
for $iii=1 to $zshu ;初始化一个所有题目的数字,为生成试题数组做准备
;MsgBox(0,"s",$i)
$ti[$iii]=$iii
Next ;$iii
for $jjj=0 to $zhangjietimu[$ii] ;开始生成试题数组,
$tmp=Random(1,$zshu-$jjj,1); 得到数后将得到的下标的序号由ti数组末尾进行填充。
$timu[$jjj]=$ti[$tmp]
$ti[$tmp]=$ti[$zshu-$jjj]
$sql="select * from "&$mokuai&" where id="&$timu&";"
_SQLite_Startup ()
$hQuery=_SQLite_Open ($SQLite_Data_Path)
_SQLite_Query(-1,$sql,$hQuery)
if _SQLite_FetchData($hQuery, $aRow) = $SQLITE_OK Then
Local $tmpsql
$tmpsql="INSERT INTO temp VALUES ("&$aRow&","&$aRow&","&$aRow&","&$aRow&","&$aRow&","&""&","&$aRow&")"
_SQLite_Exec (-1, $tmpsql)
EndIf
Next ;$jjj
Next ;$ii
EndIf ;判断结束
Else
MsgBox(0,"读数据库错!","程序即将退出!")
exit
EndIf
EndFunc
本帖最后由 weeew 于 2013-5-22 08:57 编辑
我要实现的是,在多个表里面读取记录并写到temp表里面的,这些表结构相同
在这个之前数据库没打开过 先打开数据库先! 回复 3# hzxymkb
在 52 53 行有打开数据库啊 5253行放到for循環外,然後_SQLite_FetchData用_SQLite_QueryFinalize結束。 回复 5# tsui
能不能改下我的代码 我不知道加哪里,放到哪个循环外面
我里面有3个循环
一个大的是控制生成哪个新表的
2个小的是为了生成几组不重复的数 _SQLite_Exec前增加一行試試
_SQLite_QueryFinalize($hQuery) 回复 7# tsui
不行和之前没区别
页:
[1]