Python语言技术文档

微信小程序技术文档

php语言技术文档

jsp语言技术文档

asp语言技术文档

C#/.NET语言技术文档

html5/css技术文档

javascript

点击排行

您现在的位置:首页 > 技术文档 > C#/.NET技巧

asp.net下将纯真IP数据导入数据库中的代码

来源:中文源码网    浏览:131 次    日期:2024-05-01 00:11:39
【下载文档:  asp.net下将纯真IP数据导入数据库中的代码.txt 】


asp.net下将纯真IP数据导入数据库中的代码
纯真IP数据包含381085条,可以通过下载的查询软件将数据解压为文本格式,并将其编码改为UTF8,否则在程序中读取中文会乱码! 下面为程序执行分析IP数据并插入到Sql Server的截图:程序通过AJAX在客户端进行数据插入实时更新: 实现代码如下: 前端页面及javascript: 复制代码 代码如下: 导入IP地址数据库-power by blog.atnet.cc
请填写相关数据,选择IP数据文件!
数据库IP:
数据库名:
数据表名:
用 户 名:
密 码
IP文件:
注:j为一个自定义的javascript类库,中间包含了ajax功能的代码 后台程序我们用来接收ajax发送的Post 请求: 代码如下: 复制代码 代码如下: File:do.ashx?args=ImportIPData public void ProcessRequest(HttpContext context) { if (context.Request.RequestType == “POST”) { string action = context.Request["action"]; //提交IP数据 if (string.IsNullOrEmpty(action) || action == “submit”) { string dbserver = context.Request["dbserver"], tbname = context.Request["tbname"]; StringBuilder sb = new StringBuilder(500); sb.Append(“server=”).Append(dbserver).Append(“;database=”).Append(context.Request["dbname"]) .Append(“;uid=”).Append(context.Request["dbuid"]).Append(“;pwd=”).Append(context.Request["dbpwd"]); //保存数据库连接字符串及数据表名 HttpContext.Current.Session["ip_dbconnstring"] = sb.ToString(); HttpContext.Current.Session["ip_tablename"] = tbname; //读取IP数据并缓存 IList ipList = new List(); HttpPostedFile file = context.Request.Files[0]; using (StreamReader sr = new StreamReader(file.InputStream, Encoding.UTF8)) { while (sr.Peek() != -1) { ipList.Add(Regex.Replace(sr.ReadLine(), “\\s{2,}”, ” “)); } } HttpRuntime.Cache.Insert(“ip_data”, ipList); //想客户端发送数据信息(Json格式) sb.Remove(0, sb.Length); sb.Append(“[{server:'").Append(dbserver) //服务器地址 .Append("',count:'").Append(ipList.Count) //IP条数 .Append("',insertNum:0") //本次插入条数 .Append(",taskNum:0") //任务队列条数 .Append("}]“); context.Session["ip_info"] = sb.ToString(); //触发父页面开始插入数据 context.Response.Write(“”); } else { using (SqlConnection conn = new SqlConnection(context.Session["ip_dbconnstring"] as string)) { string tbname = context.Session["ip_tablename"] as string; //初始化,建表并返回信息 if (action == “init”) { SqlCommand cmd = new SqlCommand(“if not exists(select * from sysobjects where [name]='” + tbname + “‘ and xtype='u')BEGIN CREATE TABLE ” + tbname + “(id BIGINT PRIMARY KEY IDENTITY(1,1),sip NVARCHAR(15),eip NVARCHAR(15),area NVARCHAR(80),[name] NVARCHAR(80))END”, conn); conn.Open(); cmd.ExecuteNonQuery(); context.Response.Write(context.Session["ip_info"]); } //插入数据 else if (action == “insert”) { IList ipList = HttpRuntime.Cache["ip_data"] as IList; StringBuilder sb = new StringBuilder(400); //默认每次插入300条 int insertNum; int.TryParse(context.Request["num"], out insertNum); if (insertNum < 1) insertNum = 300; SqlCommand cmd = new SqlCommand(); cmd.Parameters.AddRange( new SqlParameter[]{ new SqlParameter(“@sip”,null), new SqlParameter(“@eip”,null), new SqlParameter(“@area”,null), new SqlParameter(“@name”,null) }); cmd.Connection = conn; conn.Open(); string[] arr; for (var i = 0; i <= insertNum && i < ipList.Count; i++) { arr = ipList[i].Split(‘ ‘); cmd.CommandText = “if not exists(select id from ” + tbname + ” where sip='”+arr[0]+”‘and eip='”+arr[1]+”‘) INSERT INTO ” + tbname + ” values(@sip,@eip,@area,@name)”; cmd.Parameters["@sip"].Value = arr[0]; cmd.Parameters["@eip"].Value = arr[1]; cmd.Parameters["@area"].Value = arr[2]; cmd.Parameters["@name"].Value =arr.Length>=4?arr[3]:”"; sb.Remove(0, sb.Length); cmd.ExecuteNonQuery(); ipList.Remove(ipList[i]); } sb.Remove(0, sb.Length); sb.Append(“[{count:").Append(ipList.Count) //未插入IP的条数 .Append(",insertNum:").Append(insertNum) .Append("}]“); context.Response.Write(sb.ToString()); } } } } } } 当处理上面的代码之后IP数据将添加到你的数据库中!总数是38万条添加时间在1个小时左右! 写入到数据库后的截图如下:

相关内容