如何从 Delphi 中的 ADO 查询导入数据集(或检查它是否存在于数据库 table 中)

How to import a Data set from ADO Query in Delphi (or check if it exist in the database table)

使用 DELPHI 10.3 + MS ACCESS 2010

所以我基本上是在尝试检查数据集(如 用户名密码 是否为 login/sign up 形式) 存在于数据库 table..

我在数据库中使用 Microsoft Access,并配置了以下组件:

我的问题是,我怎样才能调用 results/import 结果并从 ADOQuery 或其他东西的数据库中检查它是否存在..

我的理解是我必须使用 ADOQuery.SQL 字符串才能做到这一点?但我不确定如何让它真正起作用。 (我显然是新手)

如果您有答案,我们将不胜感激!如果您需要更多问题,我会尽力回答您,必要时会提供屏幕截图

> PS: 你可以做一个简单的例子来帮助我理解细节

对于您的登录验证,请使用类似这样的东西(超出我的记忆,未经测试):

ADOQuery1.SQL.Text := 'SELECT UserCode FROM Credentials ' +
                      'WHERE (UserCode = :UserCode) ' +
                        'AND (Password = :Password)';
ADOQuery1.Parameters.ParamByName('UserCode').Value := FUserCode;
ADOQuery1.Parameters.ParamByName('Password').Value := FPassword;
ADOQuery1.Open;
if ADOQuery1.Eof then
    ShowMessage('Invalid credentials')
else
    ShowMessage('OK')

顺便说一句:将密码存储在数据库中不是一个好主意。请改用哈希码。

BTW2:我 return 编辑了 UserCode,但您可能会 return 一些更有用的信息,例如权限、上次登录或其他。我不知道你手头有什么。

要在数据库中创建 username/password,您可以这样做:

ADOQuery1.SQL.Text := 'INSERT INTO Credentials (UserCode, Password) ' +
                      'VALUES (:UserCode, :Password)';
ADOQuery1.Parameters.ParamByName('UserCode').Value := FUserCode;
ADOQuery1.Parameters.ParamByName('Password').Value := FPassword;
ADOQuery1.ExecSql;

通过这段代码,您将了解如何将数据写入数据库。如您的评论所述,“导入”是将数据从 Delphi 写入数据库。也就是向数据库写入数据。上面的代码是你需要的。写入用户名或任何其他数据没有区别。

我强烈建议您阅读一本关于 SQL 的好书(或在线阅读)! 还有一本关于 Delphi.

的书