~~用delphi代码如何实现TQuery与SQL Server数据库的连接?

时间:2022-05-11 21:49:29
uses
    DB,   ADODB; 

procedure TForm1.SpeedButton3Click(Sender: TObject);
Var
  adoquery: tadoquery;
begin
  adoquery:=tadoquery.Create(self);
  with adoquery do
  begin
    try
      ConnectionString := 'Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=server_test;Data Source=database_test';
      //数据库服务器为server_test,数据库为database_test,登陆用户名为sa,密码为空
      SQL.Clear;
      SQL.Add('select * from table_test where a <> 0');
      Active:=true;
      showmessage(FieldByName('a').AsString);
    finally
      Free;
    end;
  end;
end;

——ConnectionString := ……这一行总是不对???

15 个解决方案

#1


o哦,我给的代码是用tadoquery的,数据库那一行该怎么写?
TQuery的连接呢?该怎么写?

#2


我知道通过手动设置:先在Bde中建立Sql Server的数据库别名aaa   
  TDatabase   Name             Database1  
              AliasName        aaa 
              DatabaseName     任意设置一个数据库名   
              LoginPrompt      False   
              Params           username=用户名     password=密码   
              Connected        true       
  TQuery      DatabaseName     和Tatabase的DatabaseName属性一致   
              Sql              放入Sql语句   
              Active           True   
——我给出的代码中的那一行就是完成类似工作的,但是代码该如何实现呢?谢谢!!!

#3


数据库那一行可以在控件里面去点,它会自动生成的~

根据你选择的再复制过来就行了

query可以在里面设置数据库名和表名吧

#4


——谢谢◎!!!!
——用TQuery连接sql server时,用户、密码是怎么用代码设置的呢?
  temp_Database := TDatabase.Create(self);
  with temp_Database do
  begin
    AliasName := 'test';
    DatabaseName := 'fundrun';
    LoginPrompt := false;
    //Database1.Params  //username=用户名,password=密码????
    Connected := true;
  end;
  Query1.Active := false;
  Query1.DatabaseName := temp_Database.DatabaseName;
  Query1.Active := true;

#5


Params.Values['USER NAME']:=userid;
Params.Values['PASSWORD']:=password;

#6


用ado吧,用bde是因为delphi5版本中的ado bug太多,现在已经没有什么问题了,bde太麻烦了

#7


——谢谢你,hongqi162(失踪的月亮)
——我改成了这样,运行时还是报错,无效的用户名、密码;怎么回事呢?谢谢:
  temp_Database := TDatabase.Create(self);
  with temp_Database do
  begin
    AliasName := 'test';
    DatabaseName := 'fundrun';
    LoginPrompt := false;
    Params.Values['USER NAME']:= 'sa';
    Params.Values['PASSWORD']:= ''; //密码为空
    Connected := true;
  end;

  Query1.Active := false;
  Query1.DatabaseName := temp_Database.DatabaseName;
  Query1.Active := true;
  temp_Database.Free;

#8


报错大概是说,没有与新人的连接相关联;
是否还要指定server name之类的?

#9


你没有测试连接是否成功。
或者你自己手动配置一下,看看原因在哪里?

#10


我用代码生成的TDatabase做连接,就一定要指定别名吗?下面这样还是不行?
——我用TDatabase控件配置过的,只要指定好别名(在BDE里设好的)等就可以了;
——但是用代码实现该怎么办呢?不要手动去BDE里设置什么数据库别名 
  temp_Database := TDatabase.Create(self);
  with temp_Database do
  begin
    Params.Values['ServerName'] := 'server_test';//sql server服务器
    Params.Values['DATABASE NAME'] :='fundrun';//连接的默认数据库
    Params.Values['USER NAME'] :='sa';
    Params.Values['PASSWORD'] := '';
    DriverName := 'MSSQL';
    KeepConnection := True;
    TransIsolation := tiDirtyRead;
    DataBaseName := 'fundrun';//那这个DataBaseName又是什么呢???
    LoginPrompt := False;
  end;

  Query1.Active := false;
  Query1.DatabaseName := temp_Database.DatabaseName;
  Query1.Active := true;
  temp_Database.Free;

#11


————我要用代码实现,各位,有会的吗?
帮忙啊

#12


var    
  temp_Database:tdatabase;
  query:tquery;
  datasource:tdatasource;
begin
  temp_Database:=tdatabase.Create(nil);
  with temp_Database do
  begin
    Connected:=false;
    Params.Clear;
    Params.Values['user name']:='sa';
    params.Values['password']:='';
    LoginPrompt:=false;
    databasename:='fundrun';
  end;
  try
    temp_Database.Connected:=true;
    query1.active:=false;
    query1.DatabaseName:='fundrun';
    query1.active:=True;
    //
  except
    //
  end;
end;

#13


——问题已经解决,注销掉这一句:DriverName := 'MSSQL';
——DriverName 跟KeepConnection := True;不能同时指定。

#14


hongqi162(失踪的月亮) ( ) 信誉:105 
——不指定'ServerName'都能行?

#15


谢谢,对于本地的就能象你这么做

#1


o哦,我给的代码是用tadoquery的,数据库那一行该怎么写?
TQuery的连接呢?该怎么写?

#2


我知道通过手动设置:先在Bde中建立Sql Server的数据库别名aaa   
  TDatabase   Name             Database1  
              AliasName        aaa 
              DatabaseName     任意设置一个数据库名   
              LoginPrompt      False   
              Params           username=用户名     password=密码   
              Connected        true       
  TQuery      DatabaseName     和Tatabase的DatabaseName属性一致   
              Sql              放入Sql语句   
              Active           True   
——我给出的代码中的那一行就是完成类似工作的,但是代码该如何实现呢?谢谢!!!

#3


数据库那一行可以在控件里面去点,它会自动生成的~

根据你选择的再复制过来就行了

query可以在里面设置数据库名和表名吧

#4


——谢谢◎!!!!
——用TQuery连接sql server时,用户、密码是怎么用代码设置的呢?
  temp_Database := TDatabase.Create(self);
  with temp_Database do
  begin
    AliasName := 'test';
    DatabaseName := 'fundrun';
    LoginPrompt := false;
    //Database1.Params  //username=用户名,password=密码????
    Connected := true;
  end;
  Query1.Active := false;
  Query1.DatabaseName := temp_Database.DatabaseName;
  Query1.Active := true;

#5


Params.Values['USER NAME']:=userid;
Params.Values['PASSWORD']:=password;

#6


用ado吧,用bde是因为delphi5版本中的ado bug太多,现在已经没有什么问题了,bde太麻烦了

#7


——谢谢你,hongqi162(失踪的月亮)
——我改成了这样,运行时还是报错,无效的用户名、密码;怎么回事呢?谢谢:
  temp_Database := TDatabase.Create(self);
  with temp_Database do
  begin
    AliasName := 'test';
    DatabaseName := 'fundrun';
    LoginPrompt := false;
    Params.Values['USER NAME']:= 'sa';
    Params.Values['PASSWORD']:= ''; //密码为空
    Connected := true;
  end;

  Query1.Active := false;
  Query1.DatabaseName := temp_Database.DatabaseName;
  Query1.Active := true;
  temp_Database.Free;

#8


报错大概是说,没有与新人的连接相关联;
是否还要指定server name之类的?

#9


你没有测试连接是否成功。
或者你自己手动配置一下,看看原因在哪里?

#10


我用代码生成的TDatabase做连接,就一定要指定别名吗?下面这样还是不行?
——我用TDatabase控件配置过的,只要指定好别名(在BDE里设好的)等就可以了;
——但是用代码实现该怎么办呢?不要手动去BDE里设置什么数据库别名 
  temp_Database := TDatabase.Create(self);
  with temp_Database do
  begin
    Params.Values['ServerName'] := 'server_test';//sql server服务器
    Params.Values['DATABASE NAME'] :='fundrun';//连接的默认数据库
    Params.Values['USER NAME'] :='sa';
    Params.Values['PASSWORD'] := '';
    DriverName := 'MSSQL';
    KeepConnection := True;
    TransIsolation := tiDirtyRead;
    DataBaseName := 'fundrun';//那这个DataBaseName又是什么呢???
    LoginPrompt := False;
  end;

  Query1.Active := false;
  Query1.DatabaseName := temp_Database.DatabaseName;
  Query1.Active := true;
  temp_Database.Free;

#11


————我要用代码实现,各位,有会的吗?
帮忙啊

#12


var    
  temp_Database:tdatabase;
  query:tquery;
  datasource:tdatasource;
begin
  temp_Database:=tdatabase.Create(nil);
  with temp_Database do
  begin
    Connected:=false;
    Params.Clear;
    Params.Values['user name']:='sa';
    params.Values['password']:='';
    LoginPrompt:=false;
    databasename:='fundrun';
  end;
  try
    temp_Database.Connected:=true;
    query1.active:=false;
    query1.DatabaseName:='fundrun';
    query1.active:=True;
    //
  except
    //
  end;
end;

#13


——问题已经解决,注销掉这一句:DriverName := 'MSSQL';
——DriverName 跟KeepConnection := True;不能同时指定。

#14


hongqi162(失踪的月亮) ( ) 信誉:105 
——不指定'ServerName'都能行?

#15


谢谢,对于本地的就能象你这么做