这是一个关于excel导入C#并保存到数据库里的项目。读取是没有问题了,当时保存时总是出错,总是在 coon.Open();说:ConnectionString 属性尚未初始化;超级无敌郁闷的,找了好久都不知道错在哪里!!请各位帮帮忙啊......
本来是以为没定义变量,或是命名空间有误,但还是不行
快救救我啊,各位英雄!!~~
using System.Data.OleDb;
using System.Data.Common;
using System.Data.SqlClient;
string strSource;
        internal void open()
        {        }
        private void button1_Click(object sender, EventArgs e)
        {
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                string conString = openFileDialog1.FileName;
                string strSource = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + conString + "; Extended Properties =Excel 8.0";
                OleDbConnection conn = new OleDbConnection(strSource);
                string sqlstring = @"SELECT * FROM [Sheet1$]";
                OleDbDataAdapter adapter = new OleDbDataAdapter(sqlstring, conn);
                DataSet da = new DataSet();
                adapter.Fill(da);
                this.dataGridView1.DataSource = da.Tables[0];
            }
        }        private void button2_Click(object sender, EventArgs e)
        {
            using (OleDbConnection conn = new OleDbConnection(strSource))
            {
                OleDbCommand cmd = new OleDbCommand("select 学号,身份证号,姓名,系别,专业,年级,班别,证书编号,证书类别,级别,评定成绩,考试届数 from [Sheet1$]", conn);
                conn.Open();
                using (DbDataReader dr = cmd.ExecuteReader())
                {
                    if (dr.HasRows)
                    {
                        string sqlconnectionstring = "Data Source=.;Initial Catalog=ym;Integrated Security=True;uid=sa;";
                        using (SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlconnectionstring))
                        {
                            bulkCopy.DestinationTableName = "证书获取表";
                            bulkCopy.WriteToServer(dr);
                            dr.Close();
                            dr.Dispose();
                            MessageBox.Show("保存成功");
                        }
                    }
                }
            }
        }

解决方案 »

  1.   

    是不是这一句报错?
    SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlconnectionstring)
    那你要看看SqlBulkCopy类的构造函数定义了。
      

  2.   


    using (OleDbConnection conn = new OleDbConnection(strSource))
      {
      OleDbCommand cmd = new OleDbCommand("select 学号,身份证号,姓名,系别,专业,年级,班别,证书编号,证书类别,级别,评定成绩,考试届数 from [Sheet1$]", conn);
      conn.Open();
      using (DbDataRea
    你在button2_Click方法中用strSource做连接字符串,但是这个变量不是全局的呀!
    你的strSource是在这里定义的,所以这是问题的原因吧!
    private void button1_Click(object sender, EventArgs e)
      {
      if (openFileDialog1.ShowDialog() == DialogResult.OK)
      {
      string conString = openFileDialog1.FileName;
      string strSource = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + conString + "; Extended Properties =Excel 8.0";
      

  3.   

    using (SqlConnection conn= new SqlConnection(connectionString))
      {
      SqlCommand myCommand = new SqlCommand("SELECT * FROM Tb", conn);
      conn.Open();
      SqlDataReader reader = myCommand.ExecuteReader();    using (SqlConnection conn2= new SqlConnection(connectionString))
      {
      conn2.Open();
        
      using (SqlBulkCopy bulkCopy = new SqlBulkCopy(conn2.ConnectionString))
      {
       }
      }
      }
      

  4.   

    OleDbConnection conn = new OleDbConnection(strSource);   SqlCommand sqlCmd = new SqlCommand();
      sqlCmd.Connection = conn;//加上这两句  string sqlstring = @"SELECT * FROM [Sheet1$]";
      

  5.   

    数据库连接没有设置呢. 你在进行数据库操作之前设置一下 ConnectionString 属性的值就行了.
      

  6.   

    To  computerfox:
    开始时我已经定义了 string strSource;
    是在Button外定义的全局变量啊,应该是没有错的~~
      

  7.   

    To javaoraspx:
    添加了,但出现了新的问题:无法将类型“System.Data.OleDb.OleDbConnection”隐式转换为“System.Data.SqlClient.SqlConnection”
      

  8.   

    To wuyq11:
    根据你所给的代码,我进行了修改,但还是出现了一样的问题!或许是配置的问题,我打开了 app.config
    其代码如下:
        <connectionStrings>
            <add name="统计报表.Properties.Settings._20082330124ConnectionString"
                connectionString="Data Source=127.0.0.1;Initial Catalog=20082330124;User ID=sa"
                providerName="System.Data.sqlClient" />
        </connectionStrings>
    我的数据库名称为:20082330124    ID是sa
    providerName="System.Data.sqlClient"应该是没有错的
    以上代码是自动生成的啊真的是不知道报错的原因