hur.cn - 华软网

 热门搜索

pb与sql server的亲密接触??????

  作者:未知    来源:网络    更新时间:2017/9/29
如何在pb的应用中建立一个sql server数据库,并建立一些表,这样不用再单独在sql server上建立了,使用户方便使用,请各位指教
------华软网友回答------
参考pb动态sql语句第一种。以及sql server建库建表语法。
------华软网友回复------
//需要使用具有管理员权限的用户(如sa)连接master数据库
string ls_sql

ls_sql = "create database dbname" 
EXECUTE IMMEDIATE :ls_sql USING sqlca; 
if sqlTest.sqlcode <> 0 then 
  MessageBox('创建数据库失败', '错误原因: ' + sqlca.sqlerrtext ) 
  return -1 
end if 

//创建用户也可以,只要拥有权限,使用动态sql就可以,方法同上,只是具体的sql语句不同

------华软网友回复------
同意楼上的,用动态SQL语句,还可以写到文本文件中,读取执行!
------华软网友回复------
个人认为建库这种事情怎么能让用户来操作呢,而且根本不会经常使用的,为何要放在界面来完成呢?请楼主三思阿!!
------华软网友回复------
string db_name
boolean flag=true   //判断数据库是否存在accinfo数据库
string ls_use


declare database_name cursor for select name from master.dbo.sysdatabases;
open database_name;
fetch database_name into :db_name;

if SQLCA.SQLCODE<>0 then
messagebox("连接失败","警告:数据库连接失败!"+SQLCA.sqlerrtext,Stopsign!)
return
end if

do while (SQLCA.SQLCODE=0 and flag)
if db_name="accinfo" then
flag=false
end if
fetch database_name into :db_name;
loop
close database_name;


disconnect using sqlca; //断开连接

connect using sqlca;    //重新连接,开始新的事务

if flag=false  then                           //若存在accinfo数据库 drop accinfo and create a new accinfo
   if MessageBox("信息", "accinfo数据库已经存在,是否替换?",Exclamation!, OKCancel!, 2) =1 then
this.enabled=false
cb_1.enabled=false
Messagebox("提示","请关闭当前数据库的所有应用")
   ls_use="DROP DATABASE accinfo"
   EXECUTE IMMEDIATE :ls_use ;
   ls_use = 'EXEC'+'('+"'USE master'"+')'
      EXECUTE IMMEDIATE :ls_use ;
      ls_use="CREATE DATABASE accinfo ON ( NAME = accinfo, FILENAME = 'c:\program files\microsoft sql server\mssql\data\accinfo.mdf', SIZE = 10 ) LOG ON ( NAME='Sales_log',FILENAME = 'c:\program files\microsoft sql server\mssql\data\accinfo.ldf',SIZE=5MB )"
      EXECUTE IMMEDIATE :ls_use ;
      IF SQLCA.SQLCODE = -1 THEN
      messagebox("警告"," 对不起,创建数据库失败 "+SQLCA.sqlerrtext)
         return  
      End IF
this.enabled=true
cb_1.enabled=true
  // sle_1.text="database changed!"
else 
Messagebox("提示","数据库安装失败!")
   return 
   end if
else  //若不存在accinfo数据库
this.enabled=false
   cb_1.enabled=false
   ls_use = 'EXEC'+'('+"'USE master'"+')'
   EXECUTE IMMEDIATE :ls_use ;
   ls_use="CREATE DATABASE accinfo ON ( NAME = accinfo, FILENAME = 'c:\program files\microsoft sql server\mssql\data\accinfo.mdf', SIZE = 10 ) LOG ON ( NAME='Sales_log',FILENAME = 'c:\program files\microsoft sql server\mssql\data\accinfo.ldf',SIZE=5MB )"
   EXECUTE IMMEDIATE :ls_use ;
   IF SQLCA.SQLCODE = -1 THEN
messagebox("警告"," 对不起,创建数据库失败 "+SQLCA.sqlerrtext)
      return 
End IF
this.enabled=true
cb_1.enabled=true
end  if

disconnect using sqlca;   //断开master数据库的连接

ls_database="accinfo"
sqlca.dbms="odbc"
sqlca.database=ls_database
sqlca.dbparm="ConnectString='DSN=" +odbc_name +";uid=sa;pwd=" + db_password +" ' "
SQLCA.AutoCommit = False

connect using sqlca;    //连接新的数据库accinfo的连接

//测试连接是否成功
if sqlca.sqlcode<>0  then
   messagebox("连接失败","对不起!数据库连接失败"+sqlca.sqlerrtext)
halt
else
sle_1.text="连接上新数据库!"
end if
表的创建与创建数据库差不多  具体的查一下帮助 就ok了      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。