在vb中想在一个数据库db中建立一个表tab     
sqlfile中的内容是uss db
CREATE TABLE [dbo].[tab] (
[tid] [int] NOT NULL ,
[tm] [money] NULL 
) ON [PRIMARY]
GO
VB代码
  Dim sql,sqlfile As String
  sql = "master.dbo.xp_cmdshell ' osql -U kisadmin -P ypbwkfyjhyhgzj -i """ & sqlFile & """'"
  cn.Execute sql但是每次执行完,我这个表都建立在数据库master中,但是我的本意是建立在db中呀,请教大家是哪里的问题?

解决方案 »

  1.   

    use db
      

  2.   


    uss db
    GO
    CREATE TABLE [dbo].[tab] (
    [tid] [int] NOT NULL ,
    [tm] [money] NULL  
    ) ON [PRIMARY]
    GO
      

  3.   


    use db
    不是
    uss db
      

  4.   

    use db
    go
    create table .....
      

  5.   

    楼上的弟兄们,是我自己写错了,不好意思,我再把问题说下。在vb中想在一个SQL数据库db中建立一个表tab   
    sqlfile中的内容是--不能在这里写 use db,因为db名称是变化的
    CREATE TABLE [dbo].[tab] (
    [tid] [int] NOT NULL ,
    [tm] [money] NULL  
    ) ON [PRIMARY]
    GO
    上面的脚本是固定的,使用哪一个数据库是动态在变化的,我不能在脚本中指定使用哪一个数据库。
    所以我的VB代码
      Dim sql,sqlfile As String
      sql = "master.dbo.xp_cmdshell ' osql -U kisadmin -P ypbwkfyjhyhgzj -i """ & sqlFile & """'"
      cn.Execute StrUseDb  
     '这个strUseDb里面的内容就是根据我登陆不同的数据库来确定使用哪个数据库的,比如我登陆db,
     '那么这个StrUseDb="use Db"
      cn.Execute sql
    但是每次执行完,我这个表都建立在数据库master中,但是我的本意是建立在db中呀,请教大家是哪里的问题?
      

  6.   

     执行 sql = "master.dbo.xp_cmdshell ' osql -U kisadmin -P ypbwkfyjhyhgzj -i """ & sqlFile & """'"
      cn.Execute sql
    之前,重新生成sqlFile文件的内容
      

  7.   

    sqlfile是我提供给客户的脚本,很1000多行,如果重新生成我觉得比较麻烦,有没有什么别的好的办法可以实现呢?
      

  8.   

      Dim sql,sqlfile As String
      sql = "master.dbo.xp_cmdshell ' osql -U kisadmin -P ypbwkfyjhyhgzj -i """ & sqlFile & """'"
    '  cn.Execute StrUseDb   
     '这个strUseDb里面的内容就是根据我登陆不同的数据库来确定使用哪个数据库的,比如我登陆db,
     '那么这个StrUseDb="use Db"
    '设你的数据名为Db:
    sql=replace(sql,"CREATE TABLE [dbo].","CREATE TABLE Db.[dbo].")
    'or
    strUserDb="Db"
    sql=replace(sql,"CREATE TABLE [dbo].","CREATE TABLE " & strUserDb." & "[dbo].")
      cn.Execute sql
      

  9.   

      Dim sql,sqlfile As String
      sql = "master.dbo.xp_cmdshell ' osql -U kisadmin -P ypbwkfyjhyhgzj -i """ & sqlFile & """'"
    '  cn.Execute StrUseDb   
     '这个strUseDb里面的内容就是根据我登陆不同的数据库来确定使用哪个数据库的,比如我登陆db,
     '那么这个StrUseDb="use Db"
    '设你的数据名为Db:
    sql=replace(sql,"CREATE TABLE [dbo].","CREATE TABLE Db.[dbo].")
    'or
    strUserDb="Db"
    sql=replace(sql,"CREATE TABLE [dbo].","CREATE TABLE " & strUserDb & "[dbo].")
      cn.Execute sql
      

  10.   

    不对,你那个replace只能替换字符串,不能替换我脚本中的那些数据库呀。
      

  11.   

    cn.DefaultDatabase=你的数据库名然后在执行脚本,就是在你所指定的数据库里了。
      

  12.   

    在vb中想调用一个文本文件,这个文本文件的内容就是在一个SQL数据库db中建立一大堆表,这里为了演示方便,我只在sqlfile文件中只写一个表。  
    sqlfile中的内容是--不能在这里写 use db,因为数据库名称是变化的.这里就是我想要解决的问题。
    CREATE TABLE [dbo].[tab] (
    [tid] [int] NOT NULL ,
    [tm] [money] NULL   
    ) ON [PRIMARY]
    GO上面的脚本是固定的,储存在一个文本文件*.sql中.使用哪一个数据库是动态在变化的,我不能在脚本中指定使用哪一个数据库,只能在VB中临时指定。
    所以我的VB代码
      Dim sql,sqldb,sqlfile As String
      sqldb="db"
      sql = "master.dbo.xp_cmdshell ' osql -U kisadmin -P ypbwkfyjhyhgzj -i """ & sqlFile & """'"
      cn.DefaultDatabase=sqldb '加不加都是一样没有用
      cn.Execute StrUseDb   
      cn.Execute sql但是每次执行完,我这个表都建立在数据库master中,但是我的本意是建立在db中呀,请教大家是哪里的问题?
    如果大家有时间帮我测试下看行不行?
    我之前已经发一贴,如有高手解决两贴共200分一起献上。
    http://topic.csdn.net/u/20110613/20/f7eb4863-5ad1-4a8d-b681-7e259a4aaf63.htmlVB使用master.dbo.xp_cmdshell 建立的表怎么总是在数据库master中呀?