当前位置: 代码迷 >> C# >> csv文件导入数据有关问题
  详细解决方案

csv文件导入数据有关问题

热度:312   发布时间:2016-05-05 05:14:54.0
csv文件导入数据问题
我把csv文件中的数据已经读入到datatable中,现在要插入到数据库里,但是数据库里的表中字段顺序和读到datatable中的csv文件字段顺序不一致,我要怎么写sql语句才能使插入到数据库中的数据与表中的字段顺序对应上呢。
------解决思路----------------------
写个insert自己排顺序,根据字段名insert
------解决思路----------------------
引用:
Quote: 引用:

意思就是其实你根本没有领会领导的意图,不知道领导到底想让你干什么
随便给你个excel表让你手动录入到数据库里去,这不现实.
总归是必须符合某种规律的
而到底是什么规律你根本不清楚

领导让我干什么,我还是明白的。我觉得,我现在只是不知道如何把读到datatable里的数据,在顺序不一致情况下插入到数据库里,这个应该是SQL没学好,除了基本语句,复杂一点的对我来说有点困难。


写入插入函数,类似这样,
SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=data;User ID=sa;password=sa;Integrated Security=False");  
    //参数化sql语句  
    public void InSertData(string s1,string s2, string s3)//插入数据库    
    {    
        string sql = "insert into table(A,B,C) values(@A, @B, @C)";  
        using (SqlCommand cmd = new SqlCommand())  
        {  
            cmd.CommandText = sql;  
            cmd.Parameters.AddWithValue("@A", s1);  
            cmd.Parameters.AddWithValue("@B", s2);  
            cmd.Parameters.AddWithValue("@C", s3);                 
            cmd.Connection = con;  
            con.Open();  
            cmd.ExecuteNonQuery();  
        }  
  
    }  
  
    private void button1_Click(object sender, EventArgs e)  
    {  
  
        DataSet ds = getdata();//dataset  
        try  
        {  
            foreach (DataRow dr in ds.Tables[0].Rows)  
            {     
                InSertData(dr[0].ToString(), dr[1].ToString(), dr[2].ToString());  
            }  
        }  
        catch (Exception ex)  
        {  
            MessageBox.Show(ex.Message);  
        }  
  
  
    }  
------解决思路----------------------
不是说了吗,动态拼接sql语句,不要写死
比如这样:

string sqlstring="insert into table (";
for(int l=0;l<dt.Columns.Count;l++)
{
sqlstring+=dt.Columns[l].Name+",";//列名拼接
}
sqlstring.TrimEnd(',');//去掉最后一个多余的逗号
sqlstring+=") values (";
for(int l=0;l<dt.Columns.Count;l++)
{
sqlstring+=dt.Rows[r][l]+",";//值拼接
}
sqlstring.TrimEnd(',');//去掉最后一个多余的逗号
sqlstring+=")";
  相关解决方案