高手请进!帮我看看这段数据库备份的程序!!!

akai5831 2006-12-15 10:32:23
开发环境是PB8+SQLServer2000,
string ls_dbms,ls_database,ls_server,ls_username,ls_passwd,ls_dbparm;
int ls_fileExist=0

string sql,ls_use;
string path,file,pathfile;
int flag=0

// is_date=string(today())
file=trim(sle_name.text)+'.sql'
path=trim(sle_path.text)
pathfile=path+file

IF Trim(sle_name.Text)='' THEN
MessageBox('提示','请输入正确的文件名称')
RETURN 0
END IF

IF trim(sle_path.text)='' THEN
MessageBox('提示','请输入正确的路径')
RETURN 0
END IF

//从database.ini里读出数据库连接参数
ls_dbms =profilestring("database.INI","DATABASE","DBMS","")
ls_database =profilestring("database.INI","DATABASE","DataBase","") //当前连接的数据库
ls_username =profilestring("database.INI","DATABASE","LogID","")
ls_passwd =profilestring("database.INI","DATABASE","LogPass","")
ls_server =profilestring("database.INI","DATABASE","ServerName","")
//SQLCA.dbparm=profilestring("database.INI","DATABASE","DBParm","")

disconnect using sqlca; //断开当前的数据库hq1

connect using sqlca_master; //连接master数据库
if sqlca_master.sqlcode <> 0 then
messagebox('提示信息!','请检查database.INI文件,参数有误,系统无法连接到master数据库!')
return -1
end if

IF FileExists(pathfile) THEN //检查指定的文件是否存在
ls_fileExist=Messagebox('系统提示','系统发现文件"'+pathfile+'"已经存在.~r~n~n要替换它吗?',Question!,YesNo!)
IF ls_fileExist= 1 THEN //press yes button
FileDelete(pathfile) //删除指定的文件
else //如果press no button,则需要返回备份界面重新输入路径或文件名
disconnect using sqlca_master; //断开master数据库

connect using sqlca; //连接用户数据库hq1
return
END IF
END IF

//设置鼠标指针
SetPointer(HourGlass!)//---开始备份---
st_note.text ='正在备份数据库,请稍等...'
st_note.visible=true
This.Enabled =FALSE //当前对话框变成不能编辑模式
ls_use = 'EXEC' + '(' + "'" + ls_database + SQLCA.Database + "'" + ')' //crm为数据库名
EXECUTE IMMEDIATE :ls_use ;

// ls_use = 'EXEC' + '(' + " ' " + ls_database + sqlca_master.Database + "'" + ')' //SQLCA.Database此时为master
// EXECUTE IMMEDIATE :ls_use ;
SQLCA.AutoCommit = True //??????????????????????

sql="EXEC sp_addumpdevice 'disk','mydisk',' "+ pathfile+ " ' " //数据库备份设备的创建
EXECUTE IMMEDIATE : sql ;

if sqlca_master.sqlcode <> 0 then
messagebox("sp_addumpdevice",sqlca.sqlerrtext);
end if
sql='BACKUP DATABASE ' + ls_database + ' TO mydisk ' //开始 备份
EXECUTE IMMEDIATE : sql ;

IF sqlca_master.SQLCODE = -1 THEN
Messagebox("系统信息!","数据库备份失败!~r~n~n请检查路径正确与否!",Stopsign!)
this.enabled = TRUE
st_note.visible=false
sqlca.sqlcode = 0
sqlca.sqldbcode = 0

ls_use="EXEC sp_dropdevice @logicalname='mydisk' @delfile ='delfile' " //除去数据库设备或备份设备,从 master.dbo.sysdevices 删除该项
EXECUTE IMMEDIATE : ls_use ;
disconnect using sqlca_master; //断开master数据库

connect using sqlca; //连接hq1数据库
RETURN
END IF

ls_use = "EXEC sp_dropdevice @logicalname='mydisk' " //除去数据库设备或备份设备,从 master.dbo.sysdevices 删除该项
EXECUTE IMMEDIATE : ls_use ;

运行都没有什么错误,就是没有生成备份的文件!!!麻烦高手赐教!!!谢谢!!!
...全文
421 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
WOFEIYANG 2006-12-26
  • 打赏
  • 举报
回复
ls_dbms =profilestring("database.INI","DATABASE","DBMS","")

因为你进行一次备份后,文件的路径已经变掉了.你再去读路径改变之后的database.INI文件就找不到了.备份完成之后,将当前路径重新设回去,就可以了.因为你在调试环境下你的当前路径使终在你应用程序路径下的,因此在那环境下是不会有问题的.
WOFEIYANG 2006-12-26
  • 打赏
  • 举报
回复
ls_dbms =profilestring("database.INI","DATABASE","DBMS","")

因为你进行一次备份后,文件的路径已经变掉了.你再去改变之后的文件路径去读database.INI文件就找不到了.备份完成之后,将当前路径重新设回去.
akai5831 2006-12-22
  • 打赏
  • 举报
回复
我试过了,系统没有问题,其它的数据库发布都没有问题,可能是我代码里面用了getfileopenname()的原因(谢谢sdhylj(青锋) 的提醒!!!),等查明真正的原因后就结帐!
谢谢各位!!!
akai5831 2006-12-20
  • 打赏
  • 举报
回复
请问安装PB8 的时候要求输入License seat 和License type的时候填什么啊!
默认License seat是1 License type有两个:concurrent seat model 和networked seat model
akai5831 2006-12-20
  • 打赏
  • 举报
回复
我现在把程序最开始的代码改成下面的了:
// Profile hq1
SQLCA.DBMS = "MSS Microsoft SQL Server 6.x"
SQLCA.Database = "hq1"
SQLCA.ServerName = "(local)"
SQLCA.LogId = "sa"
SQLCA.AutoCommit = False
SQLCA.DBParm = ""

connect using sqlca;

if sqlca.sqlcode<>0 then
messagebox("Database connect","数据库hq1连接出错!请检查hq1是否附加正确!",stopsign!)
halt close
end if

open(w_login)

怎么生产EXE文件后打开就连不上数据库,调试的时候还没有问题的
青锋-SS 2006-12-20
  • 打赏
  • 举报
回复
没碰到过,应该是系统的问题吧,找另外的机子试试.
akai5831 2006-12-20
  • 打赏
  • 举报
回复
我用过GetFolder()和GetFileOpenName(),但那是在界面里面啊,不打开那个界面就应该不会影响啊,现在连最开始的连接数据库都有问题
akai5831 2006-12-20
  • 打赏
  • 举报
回复
sql="backup database hq1 to disk='"+pathfile+"'"
execute immediate :sql using sqlca_master ;
青锋-SS 2006-12-20
  • 打赏
  • 举报
回复
ls_dbms =profilestring("database.INI","DATABASE","DBMS","")
再请问高手,上面这句语句为何在生成EXE文件后读不出来信息,一直为NULL,但调试的时候却没有问题!
-------------
如果你程序中调用了getfileopenname()之类的函数的话就会更改默认的操作目录,也就是说当前路径不在是你exe程序所在的文件夹,往往是由此引起的,可以用changedirectory()更改到程序所在路径.
akai5831 2006-12-20
  • 打赏
  • 举报
回复
我已经改过了,我现在数据库备份和恢复的代码就是这么做的,没用前面的代码!
青锋-SS 2006-12-20
  • 打赏
  • 举报
回复
告你个简单的(其实liubocy(天道酬勤)已经说了):

string ls_sql

sqlca.autocommit = true
ls_sql = "backup database kq to disk='c:\kq.bak'"
execute immediate :ls_sql;
-----------
注:kq是所备份的数据库名称,后面的文件路径及名称根据自己的要求更改就可以了.
akai5831 2006-12-20
  • 打赏
  • 举报
回复
调试的时候什么问题也没有,我只要一生成EXE文件就不行,连接不上数据库,都折腾了一个多星期了,PB8也装了两回了还是这样,真郁闷啊!
akai5831 2006-12-20
  • 打赏
  • 举报
回复
怎么会要求安装 IE5.5,我的机器上就有IE6啊!
青锋-SS 2006-12-20
  • 打赏
  • 举报
回复
怎么出来Java的东西了,JVM.
akai5831 2006-12-20
  • 打赏
  • 举报
回复
每次打开PB8都会弹出下面的对话框,麻烦看看是不是这个原因:
could not instantiate the webtarget applet info java class- error code %d

this is most likely caused by not having the microsoft java VM installed. you can install this VM through the "custom" install in IE5.5
akai5831 2006-12-20
  • 打赏
  • 举报
回复
是不是我的编译环境有问题啊,我装的是PB8
akai5831 2006-12-20
  • 打赏
  • 举报
回复
对啊,我最后改成确定的路径都不行
yangjianw2004 2006-12-20
  • 打赏
  • 举报
回复
你的database.INI 文件放大路径对吗?
akai5831 2006-12-20
  • 打赏
  • 举报
回复
调试的时候连接数据库没有问题,等生成EXE之后就连不上数据库了,不知道为何,高手帮我啊!!!
akai5831 2006-12-20
  • 打赏
  • 举报
回复
自己顶,高手帮忙啊!
为何生成EXE后就读不出来信息啊!
ls_dbms =profilestring("database.INI","DATABASE","DBMS","")
加载更多回复(6)
技术选型1,前端微信小程序原生框架cssJavaScript2,管理后台云开发Cms内容管理系统web网页3,数据后台小程序云开发云函数云数据库云存储 1,小程序端1-1,首页首页有以下几个功能点点餐菜单浏览排号等位拨打电话顶部轮播图搜索菜品这里点餐分两种1,可以设置直接点餐直接点餐:适合小型饭店,或者奶茶类的快餐店。直接就可以下单,不用识别桌号2,也可设置扫码点餐扫码点餐适合中大型饭店,可以区分桌号,方便管理我后面会教大家如何生成桌号二维码,只需要把对应桌号的二维码贴在餐桌上,用户点击 扫码点餐 识别二维码,即可获取到桌号信息。1-2,菜品浏览页菜品浏览分两种1,不带分类适合菜品少的时候2,带分类菜品多的时候,带分类更方便客户选择不带分类 带分类 1-3,搜索功能我们这里搜索有两个触发方式1,直接点击搜索图标2,点击键盘上的搜索键1-4,搜索结果,支持模糊查询如我这里只搜‘鱼’,那么菜品中所有包含鱼的都可以搜索到 1-5,购物车首先菜品列表页可以直接添加商品到购物车购物车弹起后可以做如下操作1,增删单个菜品2,清空购物车3,删除菜品这些操作都和菜品列表是联动的,也就是菜品列表和购物车里增删个数,都是可以同步的。我会在项目预览章节的视频里做具体演示。1-6,下单页下单页就是确认订单后进行下单支付的。有以下功能1,点餐明细2,价格计算3,桌号地址4,就餐人数5,添加备注6,点击下单1-7,支付页支付页分两种方式1,模拟支付适合前期学习,毕业设计等演示类的场景。2,真实微信支付适合商用,但是使用微信支付必须要有营业执照,所以前期如果只是学习的话,建议使用模拟支付。 1-8,我的订单页我的订单页分以下几个状态1,新下单待上餐2,已上餐待评价3,订单完成4,订单取消1-9,提交评论页我们可以对店家进行评论。 1-10,评价列表页可以查看所有评价和自己的评价 1-11,排号等位可以看出,我们可以选择就餐人数,排大桌或者小桌。我这里已排小桌为例通过上图可以看出1,当前排号情况2,我的排号3,可以重新排号4,到号时会有到号提示后面我会把订阅消息功能加进来,这样到号后会有订阅消息提示。 1-12,个人中心个人中心分登录和未登录两种状态未登录已登录 1-13,微信授权登录小程序 2,后厨端和排号管理端2-1,后厨端主要供后厨的厨师使用1,可以查看当前新下单2,完成后可以操作菜品完成3,可以监听用户新下单4,有新订单时会有语音提示5,厨师登录页语音提示我会在视频课里具体演示厨师登录页 厨师管理页可以查看待制作订单用户新下单后,会有语音提示 2-2,排号管理页同样也有登录页,和上面厨师登录一样,这里重点看下排号管理页管理员可以查看当前排号情况,可以叫号。3,cms管理后台我们这里的可视化网页后台使用的时云开发自带的cms(内容管理)3-1,登录页 3-2,管理后台我们可以在这里 1,添加轮播图,删除轮播图,修改轮播图2,添加菜品,删除菜品,修改菜品,上架下架菜品3,管理订单4,查看评价5,管理后厨和排号管理员6,查看排号数据  比如我查询某个用户的所有订单 查询所有新下单还未上菜的订单 还有更多的功能,我会在视频课里给大家用视频来演示,这样更直观。 4,数据库数据库我们这里用云开发自带的云数据库餐厅管理员查看趋势图

1,075

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧