首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >c# OleDbDataAdapter;发生次数?

c# OleDbDataAdapter;发生次数?
EN

Stack Overflow用户
提问于 2012-09-26 22:30:22
回答 1查看 250关注 0票数 0

我过去做过一些数据库方面的工作,包括SQL (尽管我不知道它们是什么变体);在其中一个数据库中,我确信有一个'occnum‘关键字或类似的关键字,它允许表中没有唯一字段的行通过索引进行寻址?

在我现在的情况下,几年后,在一个完全不同的工作场所,我面临着编写一个C#应用程序,该应用程序允许编辑公司特定的Access数据库。这个数据库缺少主键,所以我试图找到一个类似的“出现次数”功能来编辑特定的行,但没有找到任何东西。不能更改数据库结构,并且所有字段都不是唯一的。

作为示例,我使用OleDbDataAdapter查询一些行,如下所示:

代码语言:javascript
复制
        List<string> result = new List<string>();

        DataSet dataSet = new DataSet();
        OleDbDataAdapter oleDBA = new OleDbDataAdapter(new OleDbCommand("SELECT " + FIELDNAME_ITEMDATA_TAG + " FROM " + TABLENAME_ITEMDATA + " WHERE " + FIELDNAME_ITEMDATA_AREANUMBER + " = " + Area.ToString(), oleDbConnection));
        oleDBA.Fill(dataSet, "ResourceString");

        foreach (DataRow dr in dataSet.Tables[0].Rows)
        {
            result.Add(dr.ItemArray[0].ToString());
        }

然后使用字符串列表来填充ListBox。当列表框上的条目被填充时,我希望能够通过它的出现编号来查询单个行,如下所示:

代码语言:javascript
复制
"SELECT " + FIELDNAME_ITEMDATA_TAG + " FROM " + TABLENAME_ITEMDATA + " WHERE " + FIELDNAME_ITEMDATA_AREANUMBER + " = " + Area.ToString(), oleDbConnection AND OCCNUM = " + OccNum

这可行吗?我是不是找不到正确的关键字?

EN

回答 1

Stack Overflow用户

发布于 2012-09-27 00:03:28

occnum是一个Oracle数据库函数,不能通过Access访问。

也就是说,IIRC,Access没有任何内置主键的概念(这正是您真正想要的)。你必须自己添加它。

也就是说,您应该将主键添加到表中,然后在例程中同时选择主键和标记名(如果像上面那样动态生成查询,则可以在所有表中使用相同的主键名称),然后在想要获得更多信息时按主键进行查询。

您还应该弄清楚每个表的natural key是什么,并确保在该表上有一个惟一的索引(或者,如果需要,您可以将该列作为主键,但我建议您不要这样做)。

最后,如果您创建的主键是一个surrogate key,那么您可以使它成为一个自动递增的列,这样您就不必担心在插入新值时生成该键。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12604037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档