[英]C# cannot find namespace OleDbConnection even though using System.Data.OleDb is there
[英]OleDbConnection not found while using System.Data.OleDb namespace in code
我已经阅读了另一个问题,其中没有OldeDb
命名空间。 但是我还是有问题
我正在创建一个UWP应用,我想将数据从Excel文件上传到DataGridView。
这是我的代码
这是我的参考代码
using System.Collections.Generic;
using Windows.UI.Xaml.Controls;
using System.Data;
using Microsoft.Toolkit.Uwp.UI.Controls;
using System;
using System.IO;
using System.Data.OleDb
然后这是我上传我的excel文件的代码
String constr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fullDirectory + ";Extended Properties='Excel 12.0 XML;HDR=YES;';";
OleDbConnection con = new OleDbConnection(constr);
OleDbCommand oconn = new OleDbCommand("Select * From [" + "2018" + "$]", con);
这是我的错误代码
错误CS0246找不到类型或名称空间名称'OleDbCommand'(您是否缺少using指令或程序集引用?)
任何想法为什么会这样? 谢谢
完整代码
using System.Collections.Generic;
using Windows.UI.Xaml.Controls;
using System.Data;
using Microsoft.Toolkit.Uwp.UI.Controls;
using System;
using System.IO;
using System.Data.OleDb;
namespace App
{
/// <summary>
/// An empty page that can be used on its own or navigated to within a Frame.
/// </summary>
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
}
private void SaveButton_Click(object sender, Windows.UI.Xaml.RoutedEventArgs e)
{
}
private void CancelButton_Click(object sender, Windows.UI.Xaml.RoutedEventArgs e)
{
}
private void AppBarButton_Click(object sender, Windows.UI.Xaml.RoutedEventArgs e)
{
if (this.Frame.CanGoBack)
{
this.Frame.GoBack();
}
}
private async void BtnOpenAttendanceFileDialog_Click(object sender, Windows.UI.Xaml.RoutedEventArgs e)
{
var picker = new Windows.Storage.Pickers.FileOpenPicker();
picker.ViewMode = Windows.Storage.Pickers.PickerViewMode.List;
picker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.Desktop;
picker.FileTypeFilter.Clear();
picker.FileTypeFilter.Add(".xls");
picker.FileTypeFilter.Add(".xlsx");
picker.FileTypeFilter.Add(".dat");
picker.FileTypeFilter.Add(".csv");
Windows.Storage.StorageFile file = await picker.PickSingleFileAsync();
if (file != null)
{
this.txtFileLocation.Text = file.Path;
}
else
{
}
}
private void BtnLoadFile_Click(object sender, Windows.UI.Xaml.RoutedEventArgs e)
{
string fileDirectory = Path.GetDirectoryName(txtFileLocation.Text.Trim());
string fileName = Path.GetDirectoryName(txtFileLocation.Text.Trim());
string fullDirectory = txtFileLocation.Text.Trim();
String constr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fullDirectory + ";Extended Properties='Excel 12.0 XML;HDR=YES;';";
OleDbConnection con = new OleDbConnection(constr);
OleDbCommand oconn = new OleDbCommand("Select * From [" + "2018" + "$]", con);
}
}
}
经过一番挖掘(可以在评论中找到),我发现您只能在UWP应用程序中使用一小部分.NET。
创建一个简单的控制台应用程序将验证您的Visual Studio安装是否存在问题。 例如 :
namespace App
{
static void Main(string[] args)
{
using(var conn = new System.Data.OleDb.OleDbConnection{connString = "..info.."})
{
conn.Open();
Console.WriteLine("DS:{0} DB: {1}",conn.DataSource,conn.Database);
}
}
}
简而言之,UWP不支持OleDbConnection
。 请在此处查看有关您可以使用的内容的更多详细信息。 另外,请查看: UWP的API,以验证您使用的版本正确。
同样,此错误可能是由System.Data
多个引用变体导致的,其他所有人绊倒了这个答案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.