Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 对象引用未设置为对象错误的实例_C#_Mysql - Fatal编程技术网

C# 对象引用未设置为对象错误的实例

C# 对象引用未设置为对象错误的实例,c#,mysql,C#,Mysql,我已经编写了一个windows服务,使用C将CSV数据插入MySQL数据库表 我使用了Insert方法作为参考 在连接字符串行中,出现错误: System.NullReferenceException HResult=0x80004003消息=对象 引用未设置为对象的实例 System.Configuration.ConnectionString设置集合。此[string]。获取 返回null 插入的源代码: public void insert() { con

我已经编写了一个windows服务,使用C将CSV数据插入MySQL数据库表

我使用了Insert方法作为参考

在连接字符串行中,出现错误:

System.NullReferenceException HResult=0x80004003消息=对象 引用未设置为对象的实例

System.Configuration.ConnectionString设置集合。此[string]。获取 返回null

插入的源代码:

        public  void insert()
        {
const string CSV_CONNECTIONSTRING = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\"{0}\";Extended Properties=\"text;HDR=YES;FMT=Delimited\"";
string CSVpath = @"C:\Users\Admin\source\";  // CSV file Path you can use file choose control
var AllFiles = new DirectoryInfo(CSVpath).GetFiles("*.CSV");
string File_Name = string.Empty;
**string ConStr = ConfigurationManager.ConnectionStrings["ConStr"].ConnectionString; //error line


for (int i = 0; i < AllFiles.Length; i++)
{
    try
    {
        File_Name = AllFiles[i].Name;
        DataTable dt = new DataTable();
        using (OleDbConnection con = new OleDbConnection(string.Format(CSV_CONNECTIONSTRING, CSVpath)))
        {
            using (OleDbDataAdapter da = new OleDbDataAdapter("select * from [" + File_Name + "]", con))
            {
                da.Fill(dt);
            }
        }
        using (SqlBulkCopy bulkCopy = new SqlBulkCopy(ConStr))
        {
            bulkCopy.ColumnMappings.Add(0, "Column1");
            bulkCopy.ColumnMappings.Add(1, "Column2");
            bulkCopy.ColumnMappings.Add(2, "Column3");
            bulkCopy.DestinationTableName = "myTable";
            bulkCopy.BatchSize = dt.Rows.Count;
            bulkCopy.WriteToServer(dt);
            bulkCopy.Close();
        }                   
    }
    catch (Exception ex)
    {
        throw ex;
    }
}
}
App.config

关于MySQL表信息还有一个问题。我找不到MySQL表中写入数据的行。

我打赌字符串ConStr=ConfigurationManager。ConnectionString[ConStr]结果为空

你可以:

将字符串ConStr=ConfigurationManager.ConnectionString[ConStr].ConnectionString拆分为

在“var setting=”之后的第一行上放置一个断点,并检查该值

编辑 编辑后,我可以看到您的配置中缺少ConnectionString部分。可能是这样的:


这是针对MS Sql Server的,您需要为MySql找到一个,因为您在app.config中丢失了连接字符串。将其添加到app.config

例:


错误在哪一行抛出?ConfigurationManager.ConnectionString[ConStr]可能返回空值,访问ConnectionString属性时会发生NRE。请同时显示app.config文件好吗?我发现你的app.config有问题,你无法通过ConfigurationManager@Nhan潘:我已经更新了我的问题。谢谢大家!@MickyD的观点被采纳了-我没有正确阅读。回答更新-谢谢你指出这一点。不是问题,好先生。谢谢编辑:+1
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
  </startup>
  <system.data>
    <DbProviderFactories>
      <remove invariant="MySql.Data.MySqlClient" />
      <add description=".Net Framework Data Provider for MySQL" invariant="MySql.Data.MySqlClient" name="MySQL Data Provider" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.10.6.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
    </DbProviderFactories>
  </system.data>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="mssqllocaldb" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.10.6.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d">
      </provider></providers>
  </entityFramework>
</configuration>
var setting = ConfigurationManager.ConnectionStrings["ConStr"];
if( setting == null ) {
      throw new Exception ("Unable to retrieve connection string")
}
string ConStr = setting.ConnectionString;
if( string.IsNullOrEmpty(ConStr) ) {
      throw new Exception ("Connection string is empty");
}
<connectionStrings>
    <add name="ConStr" connectionString="Server=127.0.0.1; Database=databaseName;Uid=yourUserName;Pwd='Yourpasword'" providerName="MySql.Data.MySqlClient"/>
</connectionStrings>