你这个数据已经读出来了,从新建一个到数据库的连接,使用
INSERT INTO DBNAME (COL1,COL2...) VALUES(VALUE1, VALUE2,...) 去插入就行了阿或者直接用dataadapter也行啊

解决方案 »

  1.   

    用INSER的话连接字符串应该怎么写啊,dataadapter要怎么用呢,请帮我写下吧
      

  2.   


    public void subImportCsv_Dataset(string filePath, string fileName)
            {
                string strConn = @"Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=";
                strConn += filePath;//这个地方只需要目录就可以了                                                      
                strConn += ";Extensions=asc,csv,tab,txt;";
                OdbcConnection objConn = new OdbcConnection(strConn);                string strSQL = "select * from " + fileName;//文件名,不要带目录
                    OdbcDataAdapter da = new OdbcDataAdapter(strSQL, objConn);
                    DataSet ds = new DataSet();
                    da.Fill(ds);
                    //开始导入数据库
                string sql = "insert into AHU1_数据记录0 (VarName,TimeString,VarValue,Validity,Time_ms) values (@VarName,@TimeString,@VarValue,@Validity,@Time_ms)";
                SqlConnection con = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\Database1.mdf;Integrated Security=True;User Instance=True");
                con.Open();
                SqlCommand cmd = new SqlCommand(sql, con);
                SqlParameter p = new SqlParameter("@VarName", SqlDbType.NVarChar);
                cmd.Parameters.Add(p);
                p = new SqlParameter("@TimeString", SqlDbType.NVarChar);
                cmd.Parameters.Add(p);
                p = new SqlParameter("@VarValue", SqlDbType.NVarChar);
                cmd.Parameters.Add(p);
                p = new SqlParameter("@Validity", SqlDbType.NVarChar);
                cmd.Parameters.Add(p);
                p = new SqlParameter("@Time_ms", SqlDbType.NVarChar);
                cmd.Parameters.Add(p);
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    cmd.Parameters["@VarName"].Value = ds.Tables[0].Rows[i]["VarName"].ToString();
                    cmd.Parameters["@TimeString"].Value = ds.Tables[0].Rows[i]["TimeString"].ToString();
                    cmd.Parameters["@VarValue"].Value = ds.Tables[0].Rows[i]["VarValue"].ToString();
                    cmd.Parameters["@Validity"].Value = ds.Tables[0].Rows[i]["Validity"].ToString();
                    cmd.Parameters["@Time_ms"].Value = ds.Tables[0].Rows[i]["Time_ms"].ToString();
                    cmd.ExecuteNonQuery();
                }        }正常数据操作不行啊,我这样试过。
      

  3.   

    我当初做的是 从csv里读取到dataGridView 在批量插入access 
    http://topic.csdn.net/u/20110110/03/bf632b7c-b12c-4484-a41e-a1c4fa3ce759.html
      

  4.   

    你可以直接在数据库中导入csv文件。
    也可以读出文件内容,结合成语句插入数据库
      

  5.   

    c#有读取CSV文件的功能
    下面这个是我前几天些的一个函数:
      #region csv文件操作
            public static DataSet dataset_csv(string sql,string fileurl)
            {
                OleDbConnection oleconn = new OleDbConnection();
                OleDbCommand olecmd = new OleDbCommand();
                OleDbDataAdapter oleadp;
                DataSet csvdataset;
                oleconn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+fileurl+";Extended Properties='Text;FMT=Delimited;HDR=YES;'";
                using (oleadp = new OleDbDataAdapter(sql, oleconn))
                {
                    using (csvdataset = new DataSet("csv"))
                    {
                        oleadp.Fill(csvdataset, "csvtable");
                        return csvdataset;
                    }
                }
                olecmd.Dispose();
                oleconn.Close();
            }
            #endregion
      

  6.   

    现在问题不是读取而是把数据导入到数据库,SQL数据库或者ACCESS都可以。
      

  7.   

    可以用SqlBulkCopy(using System.Data.SqlClient): /// <summary>
            /// 将DataTable导入SqlServer数据库
            /// </summary>
            /// <param name="dt">DataTable数据</param>
            /// <param name="strIP">数据库ip</param>
            /// <param name="strDatabase">数据库名</param>
            /// <param name="strUserId">用户名</param>
            /// <param name="strPwd">密码</param>
            /// <param name="strTableName">要导入的表名</param>
            /// <returns>错误信息(无错误返回空字符串)</returns>
            public string DataTableToSqlServer(DataTable dt,string strIP,string strDatabase,string strUserId,string strPwd,string strTableName)
            {
                string strError = "";
                SqlBulkCopy SqlBulk = new SqlBulkCopy("Data Source=" + strIP + ";Initial Catalog=" + strDatabase + ";User Id=" + strUserId + ";Password=" + strPwd + ";");
                SqlBulk.DestinationTableName = strTableName;
                try
                {
                    SqlBulk.WriteToServer(dt);
                }
                catch(Exception ex)
                {
                    strError = ex.Message + ":" + ex.StackTrace;
                }
                finally
                {
                    SqlBulk.Close();
                }
                return strError;
            }DataTable中列的数据类型要和sqlserver中的列类型一一对应。
      

  8.   


    private static bool csvToSql(string fileName)
            {
                string StrConn = "server=.;database='" + DataBaseName + "';uid='" + userName + "';pwd='" + Password + "'";            SqlConnection connection = new SqlConnection(StrConn);            try
                {
                    connection.Open();                string cmdtxt = @"bulk insert " + TableName + " from '" + FilePath + fileName + "' with(FIRE_TRIGGERS,FIELDTERMINATOR=',')";                SqlCommand cmd = new SqlCommand(cmdtxt, connection);                cmd.ExecuteNonQuery();                return true;
                }
                catch (System.Exception ex)
                {
                   // log.WriteLine("文件:{0}  error:{1}", fileName, ex.Message);
                   // log.Flush();
                    return false;
                }        }
      

  9.   

    如果你导入的csv文件包含逗号特殊字符,请看这里http://anbin0814.blog.163.com/blog/static/16407510220106151254320/
      

  10.   

    还是读不进去,到底是什么原因呢 private void button1_Click(object sender, EventArgs e)
            {
                subImportCsv_Dataset("C:\\data\\","AHU1_数据记录0.csv");
                csvToSql("C:\\data\\","AHU1_数据记录0.csv");
            }
            public void subImportCsv_Dataset(string filePath, string fileName)
            {
                string strConn = @"Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=";
                strConn += filePath;//这个地方只需要目录就可以了                                                      
                strConn += ";Extensions=asc,csv,tab,txt;";
                OdbcConnection objConn = new OdbcConnection(strConn);                string strSQL = "select * from " + fileName;//文件名,不要带目录
                    OdbcDataAdapter da = new OdbcDataAdapter(strSQL, objConn);
                    DataSet ds = new DataSet();
                    da.Fill(ds);                      }
            private static bool csvToSql(string filePath, string fileName)
            {
                string StrConn = "Data Source=.;AttachDbFilename=|DataDirectory|\\App_Data\\Database1.mdf;Integrated Security=True;User Instance=True";
                
                SqlConnection connection = new SqlConnection(StrConn);            try
                {
                    connection.Open();                string cmdtxt = @"bulk insert Table from '" + filePath + fileName + "' with(FIRE_TRIGGERS,FIELDTERMINATOR=',')";                SqlCommand cmd = new SqlCommand(cmdtxt, connection);                cmd.ExecuteNonQuery();                return true;
                }
                catch (System.Exception ex)
                {
                    // log.WriteLine("文件:{0}  error:{1}", fileName, ex.Message);
                    // log.Flush();
                    return false;
                }        }
      

  11.   

    加断点先看看,你写的这个连接字符串是否正确。如果正确,然后看你写的这个
    cmdtxt 是否正确,
    bulk insert Table from 你的这个Table应该是要插入的表明
      

  12.   

    bulk insert 你的表名 from 'C:\perflogs\memory.csv' with(fieldterminator=',',rowterminator='\n')
    你在数据库执行这个,如果可以,就是你程序那里写错了,如果有问题,可能就是你cvs文件包含特殊字符
      

  13.   

    public DataSet subImportCsv_Dataset(string filePath, string fileName)
            { 
                string strConn = @"Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=";
                strConn += filePath;//这个地方只需要目录就可以了                                                      
                  strConn += ";Extensions=asc,csv,tab,txt;";
                OdbcConnection objConn = new OdbcConnection(strConn);            try
                {
                    string strSQL = "select * from " + fileName;//文件名,不要带目录
                      OdbcDataAdapter da = new OdbcDataAdapter(strSQL, objConn);
                    DataSet ds = new DataSet();
                    da.Fill(ds); 
                    return ds;
                    
                }
                catch (Exception ex)
                {
                    throw ex;
                     return null;
                }
            }
    public int UpdateResult(DataSet ds)

                  int icount=0;
                  SqlConnection con = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\Database1.mdf;Integrated Security=True;User Instance=True");
                con.Open();
                SqlCommand cmd = new SqlCommand(sql, con);
                SqlParameter p = new SqlParameter("@VarName", SqlDbType.NVarChar);
                cmd.Parameters.Add(p);
                p = new SqlParameter("@TimeString", SqlDbType.NVarChar);
                cmd.Parameters.Add(p);
                p = new SqlParameter("@VarValue", SqlDbType.NVarChar);
                cmd.Parameters.Add(p);
                p = new SqlParameter("@Validity", SqlDbType.NVarChar);
                cmd.Parameters.Add(p);
                p = new SqlParameter("@Time_ms", SqlDbType.NVarChar);
                cmd.Parameters.Add(p);
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    cmd.Parameters["@VarName"].Value = ds.Tables[0].Rows[i]["VarName"].ToString();
                    cmd.Parameters["@TimeString"].Value = ds.Tables[0].Rows[i]["TimeString"].ToString();
                    cmd.Parameters["@VarValue"].Value = ds.Tables[0].Rows[i]["VarValue"].ToString();
                    cmd.Parameters["@Validity"].Value = ds.Tables[0].Rows[i]["Validity"].ToString();
                    cmd.Parameters["@Time_ms"].Value = ds.Tables[0].Rows[i]["Time_ms"].ToString();
                      conn.Open();
                      if(cmd.ExecuteNonQuery()>0)   
    icount++;          cmd.Close();           
     }打开关闭应该放在循环内做
      

  14.   

        public int UpdateResult(DataSet ds,string sql)
            {
                int icount = 0, itemp = 0;
                SqlConnection con = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\Database1.mdf;Integrated Security=True;User Instance=True");
                SqlCommand cmd = new SqlCommand(sql, con);
                SqlParameter[] p = new SqlParameter[]
                {
                   new SqlParameter("@VarName", SqlDbType.NVarChar)
                 , new SqlParameter("@TimeString", SqlDbType.NVarChar)
                 , new SqlParameter("@VarValue", SqlDbType.NVarChar)
                 , new SqlParameter("@Validity", SqlDbType.NVarChar)
                 , new SqlParameter("@Time_ms", SqlDbType.NVarChar)};
                foreach (SqlParameter par in p)
                    cmd.Parameters.Add(p);
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    cmd.Parameters["@VarName"].Value = ds.Tables[0].Rows[i]["VarName"].ToString();
                    cmd.Parameters["@TimeString"].Value = ds.Tables[0].Rows[i]["TimeString"].ToString();
                    cmd.Parameters["@VarValue"].Value = ds.Tables[0].Rows[i]["VarValue"].ToString();
                    cmd.Parameters["@Validity"].Value = ds.Tables[0].Rows[i]["Validity"].ToString();
                    cmd.Parameters["@Time_ms"].Value = ds.Tables[0].Rows[i]["Time_ms"].ToString();
                    con.Open();
                    itemp = cmd.ExecuteNonQuery();
                    if (itemp > 0)
                    {
                        icount += itemp;
                    }
                    else
                    {
                        icount -= itemp;
                    }
                    con.Close();
                }
                return icount;
            }
      

  15.   

    bulk insert table from 'C:\data\AHU1_数据记录0.csv' with(fieldterminator=',',rowterminator='\n')
    这个在数据库可以执行,我数据库是建在项目文件夹中的APP_Data文件夹中的Database1.mdf连接字符串我也看不出什么问题啊。
      

  16.   

      string cmdtxt = @"bulk insert Table from '" + filePath + fileName + "' with(FIRE_TRIGGERS,FIELDTERMINATOR=',')";首先你要确定你的数据文件的分割符是不是','有很多数据文件的分隔符用的是|这个时候FIELDTERMINATOR=','就应该改成FIELDTERMINATOR='|'
      

  17.   

    另外你登陆的用户名还必须具有 sysadmin 和 bulkadmin 的权限
      

  18.   

    我觉得应该是你路径问题,csv分隔符是采用逗号分格的。没见过以|分格
      

  19.   

     private static bool csvToSql(string filePath, string fileName)
            {
                SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["WindowsFormsApplication3.Properties.Settings.Database1ConnectionString2"].ConnectionString);            try
                {
                    connection.Open();                string cmdtxt = @"bulk insert [Table] from "+ filePath + fileName +" with(fieldterminator=',',rowterminator='\n')";                SqlCommand cmd = new SqlCommand(cmdtxt, connection);                cmd.ExecuteNonQuery();                return true;
                }
                catch (System.Exception ex)
                {
                    // log.WriteLine("文件:{0}  error:{1}", fileName, ex.Message);
                    // log.Flush();
                    return false;
                }        }
    <connectionStrings>
            <add name="WindowsFormsApplication3.Properties.Settings.Database1ConnectionString2"
                connectionString="Data Source=KYO\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True"
                providerName="System.Data.SqlClient" />
        </connectionStrings>我实在是搞不懂了,这连接字符串是系统自动生成的,不会有问题吧,程序也看了N遍了,断点也试了一直执行得很顺利,就是数据库里不添加数据。
      

  20.   

    已经解决了就是连接字符串,把最后加是User Instance=False就好了,郁闷了搞了这么久给分了
      

  21.   

    为什么不用using System.Data.SqlClient;我还是第一次看到using System.Data.OleDb;
    我孤陋寡闻了
      

  22.   

    晕死 ,看错了,你用的是另外一个using System.Data.Odbc;
      

  23.   

    最后的解决方法是什么呀?25楼,你好像还是使用了sqlconnection