在线求解答: insert语句无法提交!
本人想在这个模块中建立ODBC,并重新连接建立好的新的数据库,尝试多次以后,数据库可以成功创建,库中的名为login的表也可以成功创建,而且通过游标(select语句)也可以将创建的数据库中的表罗列出来,但是在执行insert语句时却怎么也不成功(提示创建成功,但在数据库表login中却什么都没有),求大神解答,以下是代码:
string xmmc,sjzz,zs,sjry,sjmd,bz,zth,mm,mmq,server,serverid,serverps,odbcs,yincang,vbb,qx
xmmc=tab_xjxm.tabpage_1.sle_1.text
sjzz=tab_xjxm.tabpage_1.sle_2.text
zs=tab_xjxm.tabpage_1.sle_3.text
sjry=tab_xjxm.tabpage_1.mle_1.text
sjmd=tab_xjxm.tabpage_1.mle_2.text
bz=tab_xjxm.tabpage_1.mle_3.text
zth=tab_xjxm.tabpage_3.sle_7.text
mm=tab_xjxm.tabpage_3.sle_8.text
mmq=tab_xjxm.tabpage_3.sle_9.text
//qx=tab_xjxm.tabpage_2.ddlb_1.text
server=tab_xjxm.tabpage_2.sle_4.text
//odbcs=tab_xjxm.tabpage_2.ddlb_1.text
serverid=tab_xjxm.tabpage_2.sle_5.text
serverps=tab_xjxm.tabpage_2.sle_6.text
yincang=tab_xjxm.tabpage_2.sle_10.text
if xmmc='' then
messagebox("提示","项目名称不能为空!")
return 0
end if
if sjzz='' then
messagebox("提示","审计组长不能为空!")
return 0
end if
if zs='' then
messagebox("提示","主审不能为空!")
return 0
end if
if sjmd='' then
messagebox("提示","审计目的不能为空!")
return 0
end if
if sjry='' then
messagebox("提示","审计人员不能为空!")
return 0
end if
select zth into :vbb
from login
where zth=:zth;
if sqlca.sqlcode=0 then
messagebox("提示","帐号重复!")
return 0
end if
if trim(mm)=trim(mmq) then
///////////////////////////////////////////////////////////建立数据库
string ls_database,ls_mySql1
ls_database=xmmc
sqlca.AutoCommit = True
ls_mySql1="CREATE DATABASE "+ls_database+"";
EXECUTE IMMEDIATE :ls_mySql1 Using sqlca;
sqlca.AutoCommit = False
SetPointer(Arrow!)
end if////////////////////节点,要修改!
///////////////////////////////////////////////////////////
disconnect using sqlca;
/////////////////////////////////////////////////////////////////////////////创建ODBC
string dsn_path,driver_path,value,b,c,e,f,g,macfile,thismac,line2,line3,line2d,line3d
integer file_return,filenum,i
dsn_path="HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\"+tab_xjxm.tabpage_1.sle_1.text+""
//disconnect using sqlca;
if serverid="" then
messagebox("提示","帐号不能为空!")
elseif serverps="" then
messagebox("提示","密码不能为空!")
elseif server="" then
messagebox("提示","服务器名称不能为空!")
elseif registryget(dsn_path,"driver",RegString!,value)=1 then
messagebox("提示","DSN已经存在,请用另一名称!")
elseif registryget("HKEY_LOCAL_MACHINE\Software\ODBC\odbcinst.ini\"+tab_xjxm.tabpage_2.sle_10.text+"","driver",RegString!,driver_path)=1 then
registryset(dsn_path,"driver",RegString!,driver_path)
registryset(dsn_path,"server",RegString!,server)
registryset(dsn_path,"database",RegString!,xmmc)
registryset("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources",xmmc, RegString!,""+tab_xjxm.tabpage_2.sle_10.text+"")
b="DBMS=ODBC"
c="DbParm=ConnectString='DSN="+tab_xjxm.tabpage_1.sle_1.text+";UID="+tab_xjxm.tabpage_2.sle_5.text+";PWD="+tab_xjxm.tabpage_2.sle_6.text+"'"
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////配置文件加密
string ska,pao,ij
integer css
YtSoftKey = Create SoftKeyPwd
ska = "Ggf8231djjc2319!@#&JDnd51394fklliu&*%"
css=YtSoftKey.EncString(ska,pao,DevicePath);
if css<>0 then
messagebox("警告","请插入加密狗!")
HALT CLOSE
return 0
end if
ij = space(512)
DES(ref b, ref pao, ref ij, 1)
f = trim(ij)
//f=ij
string zn,otr,vt
integer mer
zn = "Po84231dhj3710&^^*%&)(BVYNGR107751TB"
css=YtSoftKey.EncString(zn,otr,DevicePath);
if mer<>0 then
messagebox("警告","请插入加密狗!")
HALT CLOSE
return 0
end if
vt= space(512)
DES(ref c, ref otr, ref vt, 1)
g=trim(vt)
//g=jj
file_return=fileopen("./"+tab_xjxm.tabpage_1.sle_1.text+".ini",linemode!,write!,lockwrite!,replace!)
filewrite(file_return,"[database]")
filewrite(file_return,f)
filewrite(file_return,g)
fileclose(file_return)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
macfile=".\"+tab_xjxm.tabpage_1.sle_1.text+".ini"
filenum = FileOpen(macfile,linemode!)
for i=1 to 2
FileRead(filenum, line2)
next
for i=1 to 3
FileRead(filenum, line3)
next
FileClose(filenum)
//line2d=decrypt(line2,'Bhodj^&$##!/*')
//line3d=decrypt(line3,'Bhodj^&$##!/*')
string jk,jl
jk = space(512)
jl = space(512)
DES(ref line2, ref pao, ref jk, 2)
line2d = trim(jk)
//line2d = jk
DES(ref line3, ref otr, ref jl, 2)
line3d = trim(jl)
//line3d = jl
//sle_5.text=line2d
//sle_2.text=line3d
sqlca.dbms=mid(line2d,6,4) ////////////////////////////////////////////////////配置文件读取后解密
sqlca.dbparm=mid(line3d,8,lenA(line3d)-7)
connect using sqlca;
if sqlca.sqlcode <> 0 then
messagebox("提示","连接失败!请重新配置ODBC!1");
RegistryDelete("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\"+tab_xjxm.tabpage_1.sle_1.text+"","driver")
RegistryDelete("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\"+tab_xjxm.tabpage_1.sle_1.text+"","server")
RegistryDelete("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\"+tab_xjxm.tabpage_1.sle_1.text+"","database")
RegistryDelete("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources","+tab_xjxm.tabpage_1.sle_1.text+")
RegistryDelete("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\"+tab_xjxm.tabpage_1.sle_1.text+"","")
//HALT CLOSE
else
close(parent)
end if
else
messagebox("提示","驱动不存在!")
end if
////////////////////////////////////////////////////////////////////////////////
string sql
sql='create table login(zth nvarchar(255) primary key,xmmc nvarchar(255),sjzz nvarchar(255),zs nvarchar(255),sjry nvarchar(255),sjmd nvarchar(255),bz nvarchar(255),mm nvarchar(255),mmq nvarchar(255));'
execute immediate :sql ;
//sqlca.autocommit=true
//commit ;
////////////////////////////////////////////////以上执行成功
insert into login values(:zth,:xmmc,:sjzz,:zs,:sjry,:sjmd,:bz,:mm,:mmq,:userrank);/////////////////////////无法成功执行
//sqlca.autocommit=true
commit ;
m_main.m_project.m_close.enabled=true
m_main.m_collect.m_guide.enabled=true
if sqlca.sqlcode <> 0 then
messagebox("提示","连接失败!请重新配置ODBC!");
else
messagebox("提示","创建成功!")
if sqlca.sqlcode<>0 then
messagebox("","不成功"+sqlca.sqlerrtext)
end if
end if