您的位置:首页 > 数据库

C#使用DataTable传递数据减少数据库访问打开关闭次数

2015-09-29 16:33 393 查看
public class mx_case_photo

{

private string db_url;

public mx_case_photo(string db_url)

{

this.db_url = db_url;

}

public mx_case_photo()

{

}

public int AddTable(DataTable dt)

{

int result=0;

using (MySqlConnection conn = new MySqlConnection(db_url))

{

conn.Open();

using (MySqlTransaction tran=conn.BeginTransaction())

{

try

{

for (int i = 0; i < dt.Columns.Count; i++)

{

StringBuilder sb = new StringBuilder();

sb.Append("INSERT INTO mxzu.mx_case_photo (city_id,case_id,title,photo,size,views,orderby,closed,clientip,dateline)");

sb.Append(" values(@city_id,@case_id,@title,@photo,@size,@views,@orderby,@closed,@closed,@clientip,@dateline)");

MySqlParameter[] sp ={

new MySqlParameter("@city_id",MySqlDbType.Int32),

new MySqlParameter("@case_id",MySqlDbType.Int32),

new MySqlParameter("@title",MySqlDbType.VarChar,50),

new MySqlParameter("@photo",MySqlDbType.Int32,225),

new MySqlParameter("@varchar",MySqlDbType.VarChar,50),

new MySqlParameter("@views",MySqlDbType.Int32),

new MySqlParameter("@orderby",MySqlDbType.Int32),

new MySqlParameter("@closed",MySqlDbType.Int32),

new MySqlParameter("@clientip",MySqlDbType.VarChar,50),

new MySqlParameter("@dateline",MySqlDbType.Int32)

};

sp[0].Value = dt.Columns[i]["city_id"];

sp[1].Value = dt.Columns[i]["case_id"];

sp[2].Value = dt.Columns[i]["title"];

sp[3].Value = dt.Columns[i]["photo"];

sp[4].Value = dt.Columns[i]["size"];

sp[5].Value = dt.Columns[i]["views"];

sp[6].Value = dt.Columns[i]["orderby"];

sp[7].Value = dt.Columns[i]["clientip"];

sp[8].Value = dt.Columns[i]["dateline"];

MySqlCommand comm = new MySqlCommand(sb.ToString(), conn);

comm.Parameters.AddRange(sp);

comm.Transaction = tran;

result = result + comm.ExecuteNonQuery();

}

tran.Commit();

}

catch (MySqlException e)

{

tran.Rollback();

throw e;

}

finally

{

conn.Close();

}

}

}

return result;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: