为什么我用脚本不能建库和表?急啊! ( 积分: 100 )

  • 主题发起人 主题发起人 small518
  • 开始时间 开始时间
S

small518

Unregistered / Unconfirmed
GUEST, unregistred user!
use master
if exists (select * from dbo.sysdatabases where name ='kc13')
drop database kc13
create database kc13
use kc13
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[仓位目录]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[仓位目录]
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[入库单]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[入库单]
CREATE TABLE [dbo].[仓位目录] (
[流水号] [int] IDENTITY (1, 1) NOT NULL ,
[名称] [varchar] (30) COLLATE Chinese_PRC_CI_AS NULL ,
[位置] [varchar] (30) COLLATE Chinese_PRC_CI_AS NULL ,
[管理员] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[备注] [text] COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
CREATE TABLE [dbo].[入库单] (
[流水号] [int] IDENTITY (1, 1) NOT NULL ,
[单据编号] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[原始单据] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[日期] [datetime] NULL ,
[入库原因] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[制单] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[经办人] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[红冲] [bit] NULL ,
[供货单位] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[调拨] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
上面是我的脚本,我用控件ADOCommand
this->ADOCommand1->Parameters->Clear();
this->ADOCommand1->Connection="Provider=SQLOLEDB.1;Password='"+strPWD+"';Persist Security Info=false;User ID='"+strName+"';Data Source='"+strServer+"'";
this->ADOCommand1->CommandText=this->Memo1->Tex;//上面脚本
this->ADOCommand1->Execute();
如果我把"use kc13"去掉的话,可以建库和表,但是表却建到"master"下了,这样肯定不行,
但是加上"use kc13"后,库和表都不能建了,是什么原因啊?
哪位大侠指点一下啊?
 
use master
if exists (select * from dbo.sysdatabases where name ='kc13')
drop database kc13
create database kc13
use kc13
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[仓位目录]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[仓位目录]
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[入库单]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[入库单]
CREATE TABLE [dbo].[仓位目录] (
[流水号] [int] IDENTITY (1, 1) NOT NULL ,
[名称] [varchar] (30) COLLATE Chinese_PRC_CI_AS NULL ,
[位置] [varchar] (30) COLLATE Chinese_PRC_CI_AS NULL ,
[管理员] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[备注] [text] COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
CREATE TABLE [dbo].[入库单] (
[流水号] [int] IDENTITY (1, 1) NOT NULL ,
[单据编号] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[原始单据] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[日期] [datetime] NULL ,
[入库原因] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[制单] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[经办人] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[红冲] [bit] NULL ,
[供货单位] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[调拨] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
上面是我的脚本,我用控件ADOCommand
this->ADOCommand1->Parameters->Clear();
this->ADOCommand1->Connection="Provider=SQLOLEDB.1;Password='"+strPWD+"';Persist Security Info=false;User ID='"+strName+"';Data Source='"+strServer+"'";
this->ADOCommand1->CommandText=this->Memo1->Tex;//上面脚本
this->ADOCommand1->Execute();
如果我把"use kc13"去掉的话,可以建库和表,但是表却建到"master"下了,这样肯定不行,
但是加上"use kc13"后,库和表都不能建了,是什么原因啊?
哪位大侠指点一下啊?
 
你要确保你的KC13建好了先,单看前面两句能不能顺利执行呀?
另外你看看这个资料吧
http://www.delphibbs.com/keylife/iblog_show.asp?xid=3803
KeyLife富翁笔记
作者?: wenewboy
标题?: 自动创建数据库结构(sql2000+D6)
关键字: 自动创建数据库结构(原创)
 
同意楼上的说法!
应先判断数据库是否存在,如果不存在,再建立
你最好不要用这样的脚本执行
请在delphi中用语句来控制会更好
 
我前面已经判断了该数据库是否存不存在,不存在再建立,但是为什么没有建立呢?
如果去掉了"use kc13"是可以建立的库的
是不是只有分开建库和表呢?
 
在SQL2000查询分析器中,运行良好!
迷惑中........
 
想同时建立数据库和表结构看来不好办呐!
我试了好多方法,都不行!总是说“数据库kc13不存在”
我怀疑ADOCommand把所有SQL语句一次提交事务的缘故?!
"use kc13"的时候,kc13还没有建立呢!
一己只言,仅供参考
 
是不是可以在use kc13前加一行go
 
将建库与建表的分开执行;查询分析器之所以可以通过,那是因为查询分析器自己进行了解析。
 
同意楼上的说法![:)]
 
后退
顶部