程序代码如下
现在的结果是只能执行第一条语句
我先建表但是到导入数据时提示表不存在,就是说表还没建完的情况下执行了倒入操作
有没有什么方法能得到语句是不是执行完毕
还有就是导入数据用的是bcp,如何能知道是否倒入完毕。Process p;
p = new Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.UseShellExecute = false; //
p.StartInfo.RedirectStandardInput = true; //
p.StartInfo.RedirectStandardOutput = true; //
p.StartInfo.CreateNoWindow = true; //Console
p.Start();
string connectionString = "Data Source=server;Initial Catalog=data;User Id=sa;Password=;";
SqlConnection conn = new SqlConnection(connectionString);
conn.Open();
sql = "drop table b create table b(id varchar(20),name varchar(20))";
SqlCommand cmd = new SqlCommand(sql,conn);
cmd.ExecuteNonQuery();
command = "bcp data..b in c:\\1.csv -c -t, -Sserver -Usa -P";//数据倒入p.StandardInput.WriteLine(command);
sql = "delete from a where exists (select * from b where id=a.id)";
cmd.CommandText = sql;
cmd.ExecuteNonQuery();
sql = "update n set  n.name=m.name from a n,b m where m.id=n.id";
cmd.CommandText = sql;
cmd.ExecuteNonQuery();
sql = "insert a select distinct * from b where not exists (select * from a where id=b.id)";
cmd.CommandText = sql;
cmd.ExecuteNonQuery();
sql = "drop table b";
cmd.ExecuteNonQuery();

解决方案 »

  1.   

    console.writeline("ok");console.read()if一下读到的这个串不就行了嘛。
      

  2.   

    也可以试一下]
    sql = "drop table b create table b(id varchar(20),name varchar(20))";
    SqlCommand cmd = new SqlCommand(sql,conn);
    cmd.ExecuteNonQuery();
    建表后关断开再连接一次试试看,虽然很笨的方法,但可以一试
      

  3.   

    Process本身执行好象不会按照你程序里的顺序的,
    例如这一段,
    cmd.ExecuteNonQuery();
    command = "bcp data..b in c:\\1.csv -c -t, -Sserver -Usa -P";//数据倒入p.StandardInput.WriteLine(command);
    我以前试过类似的,结果发现p.这一段先执行了,我想process里加上一个wait可能会好一点,后者
    把cmd.语句也转换成dos命令行.
      

  4.   

    强啊,bcp我都有几年没有用了sql = "drop table b create table b(id varchar(20),name varchar(20))";
    你如果是sql的话,你的语法错了,在查询分析器肯定不执行你得话
    drop table b
    go  //这个不加,sql 执行的是整句话,这句就是错的
    create table b(id varchar(20),name varchar(20))
      

  5.   

    brando_beat(Eの懒龙)
    sql = "drop table b create table b(id varchar(20),name varchar(20))";
    这个语法没错误,
    我用你的“drop table b
    go  //这个不加,sql 执行的是整句话,这句就是错的
    create table b(id varchar(20),name varchar(20))

    报错
    我也有和搂住一样的问题,关注中~~~~
      

  6.   

    drop table b
    go  //这个不加,sql 执行的是整句话,这句就是错的
    create table b(id varchar(20),name varchar(20))
      

  7.   

    我解决了。
    我是用一个exe执行多个exe的方法,先把整个拆开成多个文件执行,在建个文件顺序执行多个exe,这样就不会出错了。
    思路是这样,自己试试吧!