山那边是海 发表于 2015-1-16 22:19:41

ASP.NET教程之asp.net下将单纯IP数据导进数据库中的代...

那做企业软件是不是最好用J2EE?单纯IP数据包括381085条,能够经由过程下载的查询软件将数据解压为文本格局,并将其编码改成UTF8,不然在程序中读取中文会乱码!
上面为程序实行剖析IP数据并拔出到SqlServer的截图:



程序经由过程AJAX在客户端举行数据拔出及时更新:
完成代码以下:
前端页面及javascript:
复制代码代码以下:
<!DOCTYPEhtmlPUBLIC“-//W3C//DTDXHTML1.0Transitional//EN”“http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd“>
<htmlxmlns=”http://www.w3.org/1999/xhtml”>
<head>
<title>导进IP地点数据库-powerbyblog.atnet.cc</title>
<styletype=”text/css”>
body{font-size:14px;}
#log{border:solid1pxgold;width:400px;height:100px;padding:10px;background:gold;margin-bottom:15px;color:black;}
#recordLog{font-size:12px;}
</style>
<scripttype=”text/javascript”src=”/scripts/global.js”></script>
<scripttype=”text/javascript”>
varlog,reLog;//Log,RecordLog
varrecordCount;//IP纪录总数
window.onload=function(){
log=document.getElementById(“log”);
}
functionstartImport(){
if(!document.getElementById(“submit_ifr”)){
varelem=document.createElement(“iframe”);
elem.setAttribute(“id”,”submit_ifr”);
elem.setAttribute(“name”,”ifr”);
elem.style.cssText=”display:none”;
document.body.appendChild(elem);
document.forms.target=elem.name;
}
document.forms.submit();
log.innerHTML=”正在上传数据!<br/>”;
returnfalse;
}

functioninsertIP(){
log.innerHTML+=”入手下手剖析数据…<br/>”;
j.ajax.post(“/do.ashx?args=ImportIPData&action=init”,”",
function(x){
vard=eval(x);
recordCount=d.count;
log.innerHTML+=”<fontcolor=green>剖析数据乐成:<br/>服务器地点:”+
d.server+”,纪录:”+recordCount+”条!<br/><divid="recordLog"></div>”;
//入手下手拔出
insert();
},
function(x){log.innerHTML+=”<fontcolor=red>产生非常,已停止!</font>”;}
);
}
functioninsert(){
if(!reLog)reLog=document.getElementById(“recordLog”);
varnum=Math.floor(Math.random()*100);
j.ajax.post(“/do.ashx?args=ImportIPData&action=insert”,”num=”+num,
function(x){vard=eval(x);reLog.innerHTML=”已写进数据:”+(recordCount-d.count)+
“条,行列:”+d.count+”条,本次写进:”+d.insertNum+”条”;
if(d.count!=0){insert();}
else{reLog.innerHTML=”祝贺,写进终了!”;}
},function(x){alert(x);});
}
</script>
</head>
<body>
<divstyle=”margin:60px100px”>
<divid=”log”>请填写相干数据,选择IP数据文件!</div>
<formaction=”/do.ashx?args=ImportIPData”method=”post”enctype=”multipart/form-data”target=”ifr”>
数据库IP:<inputtype=”text”name=”dbserver”value=”.”/><br/>
数据库名:<inputtype=”text”name=”dbname”value=”tp”/><br/>
数据表名:<inputtype=”text”name=”tbname”value=”ip”/><br/>
用户名:<inputtype=”text”name=”dbuid”value=”sa”/><br/>
密码<inputtype=”password”name=”dbpwd”value=”123000″/><br/>
IP文件:<inputtype=”file”name=”ipfile”value=”C:UserscwliuDesktop1.txt”/><br/>
<buttononclick=”returnstartImport();”>导进</button>
</form>
</div>
</body>
</html>

注:j为一个自界说的javascript类库,两头包括了ajax功效的代码
背景程序我们用来吸收ajax发送的Post哀求:
代码以下:
复制代码代码以下:
File:do.ashx?args=ImportIPData
publicvoidProcessRequest(HttpContextcontext)
{
if(context.Request.RequestType==“POST”)
{
stringaction=context.Request["action"];
//提交IP数据
if(string.IsNullOrEmpty(action)action==“submit”)
{
stringdbserver=context.Request["dbserver"],tbname=context.Request["tbname"];
StringBuildersb=newStringBuilder(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<string>ipList=newList<string>();
HttpPostedFilefile=context.Request.Files;
using(StreamReadersr=newStreamReader(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(“<script>window.parent.insertIP();</script>”);
}
else
{
using(SqlConnectionconn=newSqlConnection(context.Session["ip_dbconnstring"]asstring))
{
stringtbname=context.Session["ip_tablename"]asstring;
//初始化,建表并前往信息
if(action==“init”)
{
SqlCommandcmd=newSqlCommand(“ifnotexists(select*fromsysobjectswhere="”+tbname+
“‘andxtype="u")BEGINCREATETABLE”+tbname+“(idBIGINTPRIMARYKEYIDENTITY(1,1),sipNVARCHAR(15),eipNVARCHAR(15),areaNVARCHAR(80),NVARCHAR(80))END”,conn);
conn.Open();
cmd.ExecuteNonQuery();
context.Response.Write(context.Session["ip_info"]);
}
//拔出数据
elseif(action==“insert”)
{
IList<string>ipList=HttpRuntime.Cache["ip_data"]asIList<string>;
StringBuildersb=newStringBuilder(400);
//默许每次拔出300条
intinsertNum;
int.TryParse(context.Request["num"],outinsertNum);
if(insertNum<1)insertNum=300;
SqlCommandcmd=newSqlCommand();
cmd.Parameters.AddRange(
newSqlParameter[]{
newSqlParameter(“@sip”,null),
newSqlParameter(“@eip”,null),
newSqlParameter(“@area”,null),
newSqlParameter(“@name”,null)
});
cmd.Connection=conn;
conn.Open();
string[]arr;
for(vari=0;i<=insertNum&&i<ipList.Count;i++)
{
arr=ipList.Split(‘‘);
cmd.CommandText=“ifnotexists(selectidfrom”+tbname+
”wheresip="”+arr+”‘andeip="”+arr+”‘)INSERTINTO”+tbname+
”values(@sip,@eip,@area,@name)”;
cmd.Parameters["@sip"].Value=arr;
cmd.Parameters["@eip"].Value=arr;
cmd.Parameters["@area"].Value=arr;
cmd.Parameters["@name"].Value=arr.Length>=4?arr:”";
sb.Remove(0,sb.Length);
cmd.ExecuteNonQuery();
ipList.Remove(ipList);
}
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个小时摆布!
写进到数据库后的截图以下:
如果需要重新编写代码,几乎任何一门计算机语言都可以跨平台了,还用得着Java嘛,而且像PHP/C#等语言不需要修改代码都可以跨Windows/Linux。

爱飞 发表于 2015-1-19 08:43:34

主流网站开发语言之ASP:ASP是微软(Microsoft)所开发的一种后台脚本语言,它的语法和VisualBASIC类似,可以像SSI(ServerSideInclude)那样把后台脚本代码内嵌到HTML页面中。虽然ASP简单易用,但是它自身存在着许多缺陷,最重要的就是安全性问题。

简单生活 发表于 2015-1-25 17:40:09

但是目前在CGI中使用的最为广泛的是Perl语言。所以,狭义上所指的CGI程序一般都是指Perl程序,一般CGI程序的后缀都是.pl或者.cgi。

深爱那片海 发表于 2015-2-3 12:14:19

大哥拜托,Java在95年就出来了,微软垄断个妹啊,服务器市场微软完全是后后来者,当年都是Unix的市场,现在被WindowsServer和Linux抢下大片,包括数据库也一样。

因胸联盟 发表于 2015-2-8 21:51:41

平台无关性是PHP的最大优点,但是在优点的背后,还是有一些小小的缺点的。如果在PHP中不使用ODBC,而用其自带的数据库函数(这样的效率要比使用ODBC高)来连接数据库的话,使用不同的数据库,PHP的函数名不能统一。这样,使得程序的移植变得有些麻烦。不过,作为目前应用最为广泛的一种后台语言,PHP的优点还是异常明显的。

飘灵儿 发表于 2015-2-26 11:30:04

这也就是最近几年来随着各种新的后台技术的诞生,CGI应用在Internet上越来越少的原因。CGI方式不适合大访问量的应用。

admin 发表于 2015-3-8 14:20:05

市场决定一切,我个人从经历上觉得两者至少在很长时间内还是要共存下去,包括C和C++,至少从找工作就看得出来,总不可能大家都像所谓的时尚一样,追捧一门语言并应用它。

小魔女 发表于 2015-3-16 02:54:47

现在主流的网站开发语言无外乎asp、php、asp.net、jsp等。

透明 发表于 2015-3-22 19:10:53

Asp.net:首先来说,Asp.net和Asp没什么关系,看着像是升级版本什么的,其实没什么联系。Asp是脚本编程,用的是ASP语言,而ASP.net用的是C#语言,完全不同的东西。
页: [1]
查看完整版本: ASP.NET教程之asp.net下将单纯IP数据导进数据库中的代...