我目前正在开发一个 c# 应用程序,该应用程序从用户指定的访问 (.mdb) 数据库中获取大量数据,并使用该数据执行大量操作。我最近遇到的一个问题是,某些数据库缺少所有其他数据库中都存在的列。
当数据库中不存在列时,如何在数据库上进行选择,但优雅地失败(在数据中抛出 null 或其他东西)?
目前,我的代码看起来像这样:
OleDbConnection aConnection = new
OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + FileName);
string sqlQuery = "SELECT [Table1].[Index], [Table1].[Optional Info],
[Table2].[Other Info], ....
FROM [Table1] INNER JOIN [Table2] ON [Table1].[Index]=[Table2].[Index]
ORDER BY [Table1].[Index]";
OleDbCommand aCommand = new OleDbCommand(sqlQuery, aConnection);
OleDbDataReader aReader = aCommand.ExecuteReader();
(proceed to read data in line by line, using fabulous magic numbers)
我认为很明显这是我第一次接触数据库。只要它有效,我并不过分担心,但它已停止为不包含 [Table1].[Optional Info]
列的数据库工作。它抛出一个 OleDbException: "No value given for an or more required parameters."
如有任何帮助,我们将不胜感激。
最佳答案
我可能遗漏了一些东西但是......
SELECT Table1.*, Table2.otherInfo
FROM ...
应该这样做,让客户端处理结果集,但有一个重要警告:无法从上面的 Table1
中排除一列。
(我不知道有任何方法可以“动态塑造”——从调用者的角度来看——除了上面列列表中的 *
之外的 SELECT。)
快乐编码。
关于c# - 如何使用可选列进行选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9622917/