C# 我错过了数据库中的这些错误

C# 我错过了数据库中的这些错误,c#,sql-server-ce,C#,Sql Server Ce,我错过了这些错误: System.ArgumentException: Keyword not supported: 'initial catalog'. at System.Data.SqlServerCe.SqlCeConnectionStringBuilder.GetIndex(String keyword) at System.Data.SqlServerCe.SqlCeConnectionStringBuilder.set_Item(String keyword, Obje

我错过了这些错误:

System.ArgumentException: Keyword not supported: 'initial catalog'.
   at System.Data.SqlServerCe.SqlCeConnectionStringBuilder.GetIndex(String keyword)
   at System.Data.SqlServerCe.SqlCeConnectionStringBuilder.set_Item(String keyword, Object value)
   at System.Data.Common.DbConnectionStringBuilder.set_ConnectionString(String value)
   at System.Data.SqlServerCe.SqlCeConnectionStringBuilder..ctor(String connectionString)
   at System.Data.SqlServerCe.SqlCeConnection.set_ConnectionString(String value)
   at System.Data.SqlServerCe.SqlCeConnection..ctor(String connectionString)
   at Task5.Data.SqlRepository`1.GetTable(String where) in D:\Task5\Task5.Data\Repositories\SqlRepository.cs:line 96
   at Task5.Data.SqlRepository`1.Select() in D:\Task5\Task5.Data\Repositories\SqlRepository.cs:line 39
   at Task5.Data.Services.EntityDataService.CategoryList() in D:\Task5\Task5.Data\Services\EntityDataService.cs:line 32
   at Task5.Program.Step1() in D:\Task5\Task5\Program.cs:line 74
我的代码错误:

private List<TEntity> GetTable(string where = null)
{
    var query = $"select * from {GetTableName()} {where}";

    var dataTable = new DataTable();
    using(var sqlConnection = new SqlCeConnection(connectionString))
    {
        SqlCeDataAdapter sqlDA = new SqlCeDataAdapter(query, sqlConnection);
        sqlDA.Fill(dataTable);
    }

    var entityList = new List<TEntity>();
    foreach (DataRow row in dataTable.Rows)
    {
        var entity = new TEntity();
        foreach (DataColumn column in dataTable.Columns)
        {
            var value = row[column.ColumnName];
            typeof(TEntity).GetProperty(column.ColumnName).SetValue(entity, value);
        }

        entityList.Add(entity);
    }

    return entityList;
 }

正如@Amy指出的,错误消息非常简单。这似乎是连接字符串的问题,因为您可能试图将SQL Server连接字符串用于SQL CE数据库。我认为格式应该是这样的:

数据源=MyData.sdf;持久安全信息=False

有关SQL CE连接字符串的更多详细信息,请参阅

编辑

如果您实际上使用的是SQL database Express或其他版本,那么您使用的库连接错误。您正在使用不支持SQL Express连接字符串的SqlCeConnection。您应该使用SqlConnection和SqlDataAdapter

注意:我完全没有测试就编辑了这个


我真的不明白你在问什么。关键字不受支持:“初始目录”错误消息似乎很清楚。项目中的初始目录在哪里?SQL CE不支持该配置选项。@艾米:不,我有InstallDB。sql@Amy我不清楚我的错在哪里。如果您知道错误所在,请点击fingerKeyword not supported:“initial catalog”是否在连接字符串中看到短语initial catalog?否,数据库-Microsoft SQL Server查询文件。请参见上面的编辑,如果您使用的是SQL而不是SQL CE,则您的代码是错误的。请注意,在将来的问题中包含这些详细信息将帮助用户更好地回答您的问题并提供准确的解决方案。
private List<TEntity> GetTable(string where = null)
{
    var query = $"select * from {GetTableName()} {where}";

    var dataTable = new DataTable();
    using(var sqlConnection = new SqlConnection(connectionString))
    {
        SqlDataAdapter sqlDA = new SqlDataAdapter(query, sqlConnection);
        sqlDA.Fill(dataTable);
    }

    var entityList = new List<TEntity>();
    foreach (DataRow row in dataTable.Rows)
    {
        var entity = new TEntity();
        foreach (DataColumn column in dataTable.Columns)
        {
            var value = row[column.ColumnName];
            typeof(TEntity).GetProperty(column.ColumnName).SetValue(entity, value);
        }

        entityList.Add(entity);
    }

    return entityList;
 }