读书人

牛人请进:一段代码事宜及效率方面要

发布时间: 2013-07-16 22:38:04 作者: rapoo

牛人请进:一段代码,事务及效率方面要不要改进?
下面是我正在编辑项目中的一段代码,一字未改。
运行时正常,逻辑应该没有问题。
我想请问:效率和事务方面要不要改进?虽然下面此种情况添加的记录不会太多,但如果添加记录达成千上万条,这种事务处理方法有没有问题?效率会不会太低?

期待牛人的分析!

#region 方法:public int ImportFromTxt(string _filename)。清空正则表达式语法表 W_REGEXSTD 记录,从文本文件解析数据并重新导入表中。
/// <summary>
/// 清空正则表达式语法表 W_REGEXSTD 记录,从文本文件解析数据并重新导入表中。
/// </summary>
/// <param name="_filename">文本文件名</param>
/// <returns>有效语法类别数 * 10000 + 有效记录数</returns>
public int ImportFromTxt(string _filename)
{
//文本文件的格式已经其他类检测正确才可以实例运行本方法,文本基本格式如下:
//###正则表达式语法说明###
//语法类别:>=元字符
//\b语法说明:>=单词
//\n语法说明:>=换行

string str;//读取的行数据
string linegroup = "";//类别
int group = 0;//类别数
int records = 0;//记录数
StreamReader sr = new StreamReader(_filename, Encoding.Default); //using System.IO 、using System.Text;

W_DATA wd = new W_DATA();
SqlConnection conn = wd.GetConn();
using (conn)
{
SqlCommand cmd = new SqlCommand("Truncate table W_REGEXSTD", conn);
cmd.CommandType = CommandType.Text;

conn.Open();
SqlTransaction myTrans = conn.BeginTransaction();
cmd.Transaction = myTrans;
try
{
cmd.ExecuteNonQuery();
cmd.CommandText = "pro_insert_REGEXSTD";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@admin_name", SqlDbType.NVarChar, 50);
cmd.Parameters.Add("@admin_expression", SqlDbType.NVarChar, 50);
cmd.Parameters.Add("@admin_directions", SqlDbType.NVarChar);



while ((str = sr.ReadLine()) != null)
{
if (str.Length < 7) continue;//无效行,重新读取
if (str.Substring(0, 7) == "语法类别:>=")
{
linegroup = str.Substring(7);
group++;
}
else if (str.IndexOf("语法说明:>=") >= 0)
{
cmd.Parameters["@admin_name"].Value = linegroup;
cmd.Parameters["@admin_expression"].Value = str.Remove(str.IndexOf("语法说明:>="));
cmd.Parameters["@admin_directions"].Value = str.Substring(str.IndexOf("语法说明:>=") + 7);
cmd.ExecuteNonQuery();
records++;
}
}
myTrans.Commit();
}
catch
{
myTrans.Rollback();
throw new ApplicationException("文本文件导入正则表达式语法表失败!");
}
finally
{


sr.Close();
}
}
return (group * 10000 + records);
}
#endregion


[解决办法]
很好的几种方式,可以参考:
http://www.cnblogs.com/nankezhishi/archive/2009/08/15/bulkinsert.html

读书人网 >asp.net

热点推荐