C#程序不会在其他计算机上启动。OleDB命令中存在错误

C#程序不会在其他计算机上启动。OleDB命令中存在错误,c#,.net,C#,.net,我是一个新的编码世界,因此这可能是一件愚蠢的事情。 我已经编写了一个软件,将文件复制到本地磁盘并运行特定的CMD命令。路径存储在内部服务器上的数据库中。在我的电脑上一切都很好。发布版本和安装程序等 (即使程序做了它应该做的,我也震惊了…) 但当我在另一台计算机上使用该设置时,它不会运行。我可以看到它正在工作,我已经查看了事件日志并发现: 应用程序:EAC600Programing.exe 框架版本:v4.0.30319 描述:由于未处理的异常,进程已终止 异常信息:System.InvalidO

我是一个新的编码世界,因此这可能是一件愚蠢的事情。 我已经编写了一个软件,将文件复制到本地磁盘并运行特定的CMD命令。路径存储在内部服务器上的数据库中。在我的电脑上一切都很好。发布版本和安装程序等

(即使程序做了它应该做的,我也震惊了…)

但当我在另一台计算机上使用该设置时,它不会运行。我可以看到它正在工作,我已经查看了事件日志并发现:

应用程序:EAC600Programing.exe

框架版本:v4.0.30319

描述:由于未处理的异常,进程已终止

异常信息:System.InvalidOperationException

位于System.Data.OleDb.OleDbServicesWrapper.GetDataSource(System.Data.OleDb.OleDbConnectionString,System.Data.OleDb.DataSourceWrapper ByRef)

在System.Data.OleDb.OleDbConnectionInternal..ctor处(System.Data.OleDb.OleDbConnectionString,System.Data.OleDb.OleDbConnection)

在System.Data.OleDb.OleDbConnectionFactory.CreateConnection(System.Data.Common.DbConnectionOptions,System.Data.Common.DbConnectionPoolKey,System.Object,System.Data.ProviderBase.DbConnectionPool,System.Data.Common.DbConnection)

位于System.Data.ProviderBase.DbConnectionFactory.CreateConnection(System.Data.Common.DbConnectionOptions,System.Data.Common.DbConnectionPoolKey,System.Object,System.Data.ProviderBase.DbConnectionPool,System.Data.Common.DbConnection,System.Data.Common.DbConnectionOptions)

位于System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(System.Data.Common.DbConnection、System.Data.ProviderBase.DbConnectionPoolGroup、System.Data.Common.DbConnectionOptions)

位于System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(System.Data.Common.DbConnection,System.Threading.Tasks.TaskCompletionSource`1,System.Data.Common.DbConnectionOptions,System.Data.ProviderBase.DbConnectionInternal,System.Data.ProviderBase.DbConnectionInternal ByRef)

位于System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(System.Data.Common.DbConnection,System.Data.ProviderBase.DbConnectionFactory,System.Threading.Tasks.TaskCompletionSource`1,System.Data.Common.DbConnectionOptions)

位于System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(System.Data.Common.DbConnection,System.Data.ProviderBase.DbConnectionFactory,System.Threading.Tasks.TaskCompletionSource`1,System.Data.Common.DbConnectionOptions)

位于System.Data.ProviderBase.DbConnectionInternal.OpenConnection(System.Data.Common.DbConnection,System.Data.ProviderBase.DbConnectionFactory)

在System.Data.OleDb.OleDbConnection.Open()处

在Session.Broker.GetVersionFromDB(System.String)中

在eac600programming.Main.Fill()中

在eac600programming.Main..ctor()上

在EAC600Programing.Program.Main()中

Fill是我用来用数据库中的数据填充组合框的函数。它再次使用了两个函数(在youtube上看到并在stackoverflow中读到)连接到数据库并获取数据。(Broker被分成自己的类文件)我目前没有能力解决这个问题,所以如果有人能帮忙,那就太好了。 PS.已检查是否存在相同的.Net版本。它们是一样的。(大公司的pc网络,所以所有的pc都是一样的。)是的,pc和用户都可以完全访问网络

Broker b = new Broker();
    private void Fill()
    {
        combo_BootCOC.DataSource = b.GetVersionFromDB("BootCOC");
        combo_BootBMS.DataSource = b.GetVersionFromDB("BootBMS");
        combo_BootMCS.DataSource = b.GetVersionFromDB("BootMCS");
        combo_MainCOC.DataSource = b.GetVersionFromDB("MainCOC");
        combo_MainBMS.DataSource = b.GetVersionFromDB("MainBMS");
        if (cb_Compact.Checked)
        {
            combo_MainMCS.DataSource = b.GetVersionFromDB("MainMCSCompact");
        }
        else
        {
            combo_MainMCS.DataSource = b.GetVersionFromDB("MainMCS");
        }

    }

    public class Broker
{
    OleDbConnection connection;
    OleDbCommand command;

    private void ConnectTo()
    {
        connection = new OleDbConnection(@"Provider = Microsoft.ACE.OLEDB.12.0; Data Source = N:\Release\Electric Solution\1 Production\03 Tools\05 EAC600 Programming\DataBase.accdb");
        try
        {
            command = connection.CreateCommand();
        }
        catch (Exception)
        {

            throw;
        }
    }

    public Broker()
    {
        ConnectTo();
    }

       public List<double> GetVersionFromDB(string db)
    {
        List<double> versionList = new List<double>();
        try
        {
            command.CommandText = "SELECT * FROM " + db;
            command.CommandType = CommandType.Text;
            connection.Open();

            OleDbDataReader reader = command.ExecuteReader();

            while (reader.Read())
            {
                double v;
                v = Convert.ToDouble(reader["swVersion"]);

                versionList.Add(v);
            }
            return versionList;
        }
        catch (Exception)
        {

            throw;
        }
        finally
        {
            if (connection != null)
            {
                connection.Close();
            }
        }
    }
Broker b=new Broker();
私人空间填充()
{
combo_BootCOC.DataSource=b.GetVersionFromDB(“BootCOC”);
combo_BootBMS.DataSource=b.GetVersionFromDB(“BootBMS”);
combo_BootMCS.DataSource=b.GetVersionFromDB(“BootMCS”);
combo_MainCOC.DataSource=b.GetVersionFromDB(“MainCOC”);
combo_MainBMS.DataSource=b.GetVersionFromDB(“MainBMS”);
如果(cb_紧凑型,选中)
{
combo_MainMCS.DataSource=b.GetVersionFromDB(“MainMCSCompact”);
}
其他的
{
combo_MainMCS.DataSource=b.GetVersionFromDB(“MainMCS”);
}
}
公共类经纪人
{
OLEDB连接;
OLEDB命令;
私有void ConnectTo()
{
连接=新的OleDbConnection(@“Provider=Microsoft.ACE.OLEDB.12.0;数据源=N:\Release\Electric Solution\1 Production\03 Tools\05 EAC600 Programming\DataBase.accdb”);
尝试
{
command=connection.CreateCommand();
}
捕获(例外)
{
投掷;
}
}
公共经纪人()
{
连接到();
}
公共列表GetVersionFromDB(字符串数据库)
{
列表版本列表=新列表();
尝试
{
command.CommandText=“选择*自”+db;
command.CommandType=CommandType.Text;
connection.Open();
OleDbDataReader=command.ExecuteReader();
while(reader.Read())
{
双v;
v=转换为双(读卡器[“swVersion”]);
添加(v);
}
返回版本列表;
}
捕获(例外)
{
投掷;
}
最后
{
if(连接!=null)
{
connection.Close();
}
}
}
编辑1:

所以,我通过安装Access 2010解决了第一个问题,最后解决了这个问题:

应用程序:EAC600Programing.exe

框架版本:v4.0.30319

描述:由于未处理的异常,进程已终止

异常信息:System.FormatException

位于System.Number.ParseDouble(System.String、System.Globalization.NumberStyles、System.Globalization.NumberFormatInfo)

位于System.String.System.IConvertible.ToDouble(System.IFormatPr
<configuration>
  <connectionStrings>
    <add name="ConnectionStringName" Provider = "Microsoft.ACE.OLEDB.12.0"; Data Source = "path_to_yourDB\DataBase.accdb"/>
  </connectionStrings>
</configuration> 
var connectionString=ConfigurationManager.ConnectionStrings["ConnectionStringName"].ConnectionString;