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