从 Access 数据库获取数据的正确方法

2024-02-02

我对如何从访问数据库获取数据有点困惑。首先将其收集在列表中然后从列表中获取这些数据是否正确,或者直接将其获取到数据库中是否可以?

我的代码工作得很好,但我想知道是否有更好的方法来做到这一点? :

 private void button3_Click(object sender, EventArgs e)
    {
        OleDbConnection connection = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\redgabanan\Desktop\Gabanan_Red_dbaseCon\Red_Database.accdb");
        connection.Open();
        OleDbDataReader reader = null;
        OleDbCommand command = new OleDbCommand("SELECT * from  Users WHERE LastName='"+textBox8.Text+"'", connection);
        reader = command.ExecuteReader();
        listBox1.Items.Clear();

        while (reader.Read())
        {

            listBox1.Items.Add(reader[1].ToString()+","+reader[2].ToString());
        }

        connection.Close();

*我直接从数据库获取记录,然后将其显示在列表框中。


令人头疼的一件事是 SQL 注入和使用参数化查询,例如:

OleDbCommand command = new OleDbCommand("SELECT * from  Users WHERE LastName='@1'", connection);
        
command.Parameters.AddWithValue("@1", textBox8.Text)

尽管您通常最好使用 SQL 数据库,但您所做的事情是完全可以接受的。

编辑: 以下是将业务逻辑与 GUI 分开的方法:

Class BusLogic
{
 public List<string> ListboxItems = new List<string>();
 public void PopulateListBoxItems(string userName)
 {
  string connString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\redgabanan\Desktop\Gabanan_Red_dbaseCon\Red_Database.accdb";
  using (OleDbConnection connection = new OleDbConnection(connString))
  {
        connection.Open();
        OleDbDataReader reader = null;
        OleDbCommand command = new OleDbCommand("SELECT * from  Users WHERE LastName='@1'", connection);            
        command.Parameters.AddWithValue("@1", userName)
        reader = command.ExecuteReader();    
        while (reader.Read())
        {
            ListboxItems.Add(reader[1].ToString()+","+reader[2].ToString());
        }    
   }
 }    
}

GUI

private void button3_Click(object sender, EventArgs e)
{        
      var busLogic = new BusLogic();
      busLogic.PopulateListBoxItems(textBox8.Text);          
      \\listBox1.Items.Clear();
      ListboxItems.DataSource = busLogic.ListboxItems;
}

这种“MVC”方法的优点在于,如果我们依赖使用 Binding 绑定的控件,那么我们只需要测试 BusLogic。

ps 理想情况下ListboxItems将是 IEnumerable 而不是 List,这样我们就不会向调用者公开任何添加/删除等功能。这是很好的 API 设计。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 Access 数据库获取数据的正确方法 的相关文章

随机推荐

  • 在没有cloudera manager的情况下安装cloudera impala

    请提供在没有cloudera manager的情况下在ubuntu中安装imapala的链接 无法使用官方链接安装 无法使用这些查询找到 impala 包 sudo apt get install impala Binaries for d
  • 通过 Kubernetes 在 Docker 容器中挂载 Azure 文件存储

    我正在尝试使用此处找到的方法将我的 Azure 文件存储安装到容器中 https github com kubernetes kubernetes tree master examples volumes azure file https
  • 如何改进在 Android 上使用 ORMLite 加载对象的方法?

    我正在 Android 上使用 ormlite 4 35 加载一组对象 及其外来对象 在模拟器中 计时需要 16 到 19 秒getAllCragsWithLocation 方法如下 数据库中有 590 个峭壁 其中 40 个没有位置 记录
  • 无法以编程方式更改WordPress用户头像

    我正在尝试更改我的 WordPress 网站的几个用户的头像 我读过 最好的方法是使用 WP User Avatar 插件和下面的代码 但不幸的是它不起作用 我可以询问社区的建议吗 function set avatar url avata
  • 如何命名 iPad 3 的图形文件

    据我了解 在 iOS 中 我们可以将用于视网膜显示的文件命名为 电子邮件受保护 cdn cgi l email protection 如何为 iPad 3 命名文件 ipad png iPad iPad 2 电子邮件受保护 cdn cgi
  • 为什么 c# JavaScriptSerializer.Serialize 返回空方括号

    为什么下面的代码应该返回 id 1999 title hithere 却返回 JavaScriptSerializer serializer new JavaScriptSerializer StringBuilder sbJsonResu
  • Spring Data JPA findBy 集合[重复]

    这个问题在这里已经有答案了 我正在使用 JPA 使用 Java 开发路线规划系统 我需要创建一个 findBy 方法来通过其包含的城市列表查找路线 以下是课程 Entity public class Route ManyToMany cas
  • 自定义从 UITextView 打开的自动 MFMailComposeViewController

    我有一个简单的UITextView其中有一个电子邮件链接 文本视图是可选择的并检测链接 这样 您可以单击电子邮件 它会以模式方式打开MFMailComposeViewController视图控制器 但是 我在应用程序启动时做了一些自定义 U
  • 当应用程序在 Android 10 中被杀死时,WorkManager 无法工作,尽管在版本 9 之前工作正常(Pie)

    当应用程序被 Android 10 中的后台任务杀死时 我没有通过 Workmanager 收到通知 我发现了这个问题 它适用于所有 Android 版本 直到 Andorid 9 为了测试这一点 我在 9 和 10 版本上同时运行该应用程
  • 使用 DTE.ExecuteCommand 响应对话框

    有没有办法说Yes or No or OK使用以下命令打开 Visual Studio 2015 时出现对话框 消息框EnvDTE 我尝试在盒子打开时调试我的应用程序 但我不知道要寻找什么 我也尝试过在内部搜索这个命令列表 https gi
  • 关闭Excel应用程序的正确方法

    我正在编写一个应用程序 它使用以下代码访问 Excel 文件 RBTApplication new Excel Application RBTWorkbooks RBTApplication Workbooks RBTWorkbook RB
  • C++中如何判断一个指针指向什么类型的对象?

    假设我有class SuperClass public int a and class SubClass SuperClass public int b 我获取了一个指向子类实例的指针SubClass subPointer并将该指针寻址到超
  • 如何检查客户端网络/防火墙上的端口是否打开?

    最后通过 jQuery AJAX 和 JSONP 的 超时 属性解决了这个问题 看我自己的回答 请参阅更新的部分 我也尝试过使用小程序 如果您能提供小程序实现的解决方案 我们将毫不犹豫地接受您的答案 我正在使用基于 Java 的 Web 应
  • 如何在 React Native 中添加按钮网格样式?

    我最近将手放在了 React Native 上 并尝试将按钮动态添加到视图中 我想要一个像这样的结构 在引导程序中我会添加一个带有 col md 4 的类 A A A A A A A A A A A A 我已经可以添加按钮 但它们总是出现在
  • .NET / C# 的线性编程库 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我需要求解欠定线性方程组和约束 然后找到最小化成本函数的特定解决方案 这需要通过在 NET 和 Mon
  • 如何在谷歌地图目标c上旋转自定义标记图像

    目前我正在开发一个像 Uber iOS 应用程序这样的应用程序 我已经集成了 Google Maps SDK 并且还显示了用户当前位置的自定义图像 目前我正在从服务器获取一些驾驶员当前位置详细信息 例如 100 个驾驶员 我保存在一个NSA
  • 我不清楚应用函子评估

    我目前正在阅读 Learn a Haskell for Great Good 并且我偶然发现了对某个代码块的评估的解释 我已经阅读了几次解释 并且开始怀疑作者是否理解这段代码的作用 ghci gt lt gt 3 lt gt 100 5 5
  • Android SearchView 过滤器 ListView

    我已在 SherlockAction Bar 中的 SearchView 中实现了搜索过滤器 当我输入 m 时 我想在下面的列表视图中显示过滤结果 该结果仅以 M 开头 依此类推 但现在它显示随机结果 public boolean onQu
  • matplotlib 需要 pyparsing

    我正在尝试使用 matplotlib 绘制一些数据 导入库时 出现错误 ImportError matplotlib requires pyparsing 我使用安装了 pyparsingeasy install pyparsing 但错误
  • 从 Access 数据库获取数据的正确方法

    我对如何从访问数据库获取数据有点困惑 首先将其收集在列表中然后从列表中获取这些数据是否正确 或者直接将其获取到数据库中是否可以 我的代码工作得很好 但我想知道是否有更好的方法来做到这一点 private void button3 Click