我把csv文件中的数据已经读入到datatable中,现在要插入到数据库里,但是数据库里的表中字段顺序和读到datatable中的csv文件字段顺序不一致,我要怎么写sql语句才能使插入到数据库中的数据与表中的字段顺序对应上呢。
------解决思路----------------------
写个insert自己排顺序,根据字段名insert
------解决思路----------------------
写入插入函数,类似这样,
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+=")";