我在一个数据库应用程序中,在用户输入sql server数据库服务器机器名的情况下,先用clientsocker与serversocket通信,取得sql server数据库的数据库名、用户名以及用户密码。当应答完成后,再调用datam页面中自己写的initdatabase函数连接数据库:
    initdatabase函数:    datam.cnn1.Close;
    try
     datam.cnn1.ConnectionString:='Provider=SQLOLEDB.1;      Password='+password+'; Persist Security Info=False; User ID='+SaName+'; Initial Catalog=charge2; Data Source='+dserver+';';
    except
      login.ok:=false;//设置登陆页面的标志变量
    end;
    datam.cnn1.Open;    在登陆页面是这样调用的:
    datam.initdatabase;
    if ok then.....
    else label5.caption:='数据库连接失败';    可程序运行时老是在datam.initdatabase处报错,不能按照预计的执行,这是为什么呢,该怎么改

解决方案 »

  1.   

    datam.cnn1.Close;
        try
         datam.cnn1.ConnectionString:='Provider=SQLOLEDB.1;      Password='+password+'; Persist Security Info=False; User ID='+SaName+'; Initial Catalog=charge2; Data Source='+dserver+';';
        datam.cnn1.Open;  //移到这里
        except
          login.ok:=false;//设置登陆页面的标志变量
        end;
      

  2.   

    datam.cnn1.Open;怎么不在try里面?
      

  3.   

    在delphi环境外运行,应该就可以了
      

  4.   

    datam.cnn1.Close;
        try
         datam.cnn1.ConnectionString:='Provider=SQLOLEDB.1;      Password='+password+'; Persist Security Info=False; User ID='+SaName+'; Initial Catalog=charge2; Data Source='+dserver+';';
        datam.cnn1.Open;  //移到这里
        except
          login.ok:=false;//设置登陆页面的标志变量
        end;
      

  5.   

    连接字符串有没有问题?
    datam.cnn1.Close;
        try
         datam.cnn1.ConnectionString:='Provider=SQLOLEDB.1;      Password='+password+'; Persist Security Info=False; User ID='+SaName+'; Initial Catalog=charge2; Data Source='+dserver+';';
          datam.cnn1.Open;
        except
          login.ok:=false;//设置登陆页面的标志变量
        end;