现在我想通过编写代码去实现这个和access数据库连接的问题,代码如下:
with ADOConnection1 do
  begin
    ConnectionString := 'Provider = MicroSoft.jet.OLEDB.4.0;'+
                        'Persist Security Info = False'+
                        'Data Source=D:\*.mdb;'+//数据库本地目录
                        'Mode = ReadWrite;'+
                        'Jet OLEDB:Database Password=*****;'// 加入密码
    Connected := True;//Open DataBase
  end;这段代码可以用button触发吗?还是说窗体建立的时候就可以触发了.如果都不是这段代码应该放在哪个位置让它运行?我按照这段代码编写程序后运行出错?是不是代码有误??还有个问题,通过相对路径去连接应该怎么去改,请各位指教.

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);begin
    adocuser.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;
                       Data Source=C:\Documents and Settings\xiaolu\桌面\pp\user.mdb;              //ACCESS数据库文件的路径
                       Persist Security Info=True;
    Connected:=True;
    end;end.这样写为什么不行?
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);begin
    adocuser.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;
                       Data Source='''C:\Documents and Settings\xiaolu\桌面\pp\user.mdb''';              //ACCESS数据库文件的路径
                       Persist Security Info=True';
    Connected:=True;
    end;end.
    再试试
    自己写好后用showmessage看看ConnectionString是否正确
      

  3.   

    按照楼上的说法做了,错误提示如下:
    [Error] Unit1.pas(29): Unterminated string
    [Error] Unit1.pas(30): Missing operator or semicolon
    [Error] Unit1.pas(30): ':=' expected but '=' found
    [Error] Unit1.pas(31): Undeclared identifier: 'Persist'
    [Error] Unit1.pas(31): Missing operator or semicolon
    [Error] Unit1.pas(34): Missing operator or semicolon
    [Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
      

  4.   

    试一下这样:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      with adocuser do
      begin
        Connected := False;
        ConnectionString := 'Provider=MicroSoft.Jet.OLEDB.4.0;'+
                            'Data Source=C:\Documents and Settings\xiaolu\桌面\pp\user.mdb;'+
                            'Persist Security Info=False';
        Connected := True;
      end;
    end;
      

  5.   

    1)这种语句可以放在任何的事件中触发,只要在在你应用你的那个ADOCONNECTION之前就可以了,但是一般我都是放在FormCreate中。
    2)相对路径可以用函数Extractfilepath(application.exename),例如
    Data Source=Extractfilepath(application.exename)+'user.mdb'
    3)你写的那个ConnectionString 好像有两个问题吧,在Persist Security Info = False后面少了一个“;”;在Jet OLEDB:Database Password中的“;”应该改成“;”吧。你再试试吧
      

  6.   

    语句是测试成功了,但为什么这个时候我添加adotable组件以后不能选择表名呢?是不是代码连接成功以后直接用select语句就可以了????
      

  7.   

    按照楼上的说法做了,错误提示如下:
    [Error] Unit1.pas(29): Unterminated string
    [Error] Unit1.pas(30): Missing operator or semicolon
    [Error] Unit1.pas(30): ':=' expected but '=' found
    [Error] Unit1.pas(31): Undeclared identifier: 'Persist'
    [Error] Unit1.pas(31): Missing operator or semicolon
    [Error] Unit1.pas(34): Missing operator or semicolon
    [Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
    ----------------------------------------------------------晕
    不好意思
    没看换行
    呵呵
    其实主要就是引号的问题
    都试试就ok了
      

  8.   

    添加adotable组件后connection属性可以选择,而一点tablename属性就弹出验证错误?
      

  9.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    adocuser.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;'+
    'Data Source=.\user.mdb;'+
    'Persist Security Info=false'+
    'adocuser.LoginPrompt:=False';
    showmessage(adocuser.ConnectionString);
    adocuser.Connected:=True;
    end;end.
    还是一样选择不了tablename值,这样我的dbgrid就显示不了数据了,晕^^
      

  10.   

    参考一下,用到ADOConnection、ADOTable、DataSource、DBGrid、Button控件:procedure TForm1.Button1Click(Sender: TObject);
    begin
      with ADOConnection1 do
      begin
        Connected := False;
        LoginPrompt:=False;
        ConnectionString := 'Provider=MicroSoft.Jet.OLEDB.4.0;'+
                            'Data Source=C:\db1.mdb;'+
                            'Persist Security Info=False';
        Connected := True;
      end;
      DataSource1.DataSet:=ADOTable1;
      DBGrid1.DataSource:=DataSource1;
      with ADOTable1 do
        begin
          Close;
          Connection:=ADOConnection1;
          TableName:='test';
          Open;
        end;
    end;
      

  11.   

    请问一下老之,如果不用到with的写法,下面的代码改动以后是否可行?
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    adocuser.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;'+
    'Data Source=.\user.mdb;'+
    'Persist Security Info=false'+
    'adocuser.LoginPrompt:=False';
    showmessage(adocuser.ConnectionString);
    adocuser.Connected:=True;
    ADOTable1.Connection:=adocuser;
    ADOTable1.TableName:='Users';
    ADOTable1.Open;
    end;end.
      

  12.   

    可以啊,用With方便些,或者你直接将with后面的ADOConnection1改成adocuser就行了。
      

  13.   

    'adocuser.LoginPrompt:=False';这里有问题吧,LoginPrompt是一个属性,放到外面,不做连接的字符串。
      

  14.   

    晕,啥时候把这个给放上去了,解决了,看来这玩意必须要很小心很小心,谢谢老之这几天的帮忙,也谢谢各位了.
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;'+
    'Data Source=C:\Documents and Settings\fchnipj\桌面\pj6\user.mdb;'+
    'Persist Security Info=false';
    ADOConnection1.LoginPrompt:=False;showmessage(ADOConnection1.ConnectionString);
    ADOConnection1.Connected:=True;
     ADOTable1.close;
    ADOTable1.Connection:=ADOConnection1;
    ADOTable1.TableName:='Users';
    ADOTable1.Open;
    end;end.