插入新行到SQL数据库

我需要新的记录添加到使用C#和PHP我的SQL数据库。 我用这样的代码:

string server = "http://www.naseelco.com/scorm/populatecode.php"; foreach (string code in codeList)//codelist has 200 items { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(server); request.Method = "POST"; string postData = "Code=" + code + "&Active=false"; byte[] byteArray = Encoding.UTF8.GetBytes(postData); request.ContentType = "application/x-www-form-urlencoded"; request.ContentLength = byteArray.Length; try { Stream dataStream = request.GetRequestStream(); dataStream.Write(byteArray, 0, byteArray.Length); dataStream.Close(); } catch { } }

这是populatecode.php文件的内容:

<?php $Code = $_POST['Code']; $Active = $_POST['Active']; mysql_connect("localhost","myUserName","myPassword") or die ('Error updating database'); mysql_select_db("naseelc1_AC"); mysql_query("INSERT INTO codes (code,Active)VALUES ('$Code','$Active')"); echo $Code; ?>

但是这个代码需要太多的时间来更新SQL数据库。 我的问题是:
有没有在SQL数据库中插入多条记录更有效的方法?

--------------解决方案-------------

分析性能问题时,第一件事就是要测试和验证 ,你失去的时候, 不要认为这是你的系统的一个特殊组成部分。

你说“ 需要太多的时间来更新SQL数据库 ”,你怎么知道它是正在放缓你失望的INSERT语句中?

首先,你必须衡量你的系统各部分的运行时间。 然后优化的那部分。

如果你不知道要优化哪部分不启动优化。

使用分析器或简单的时间使用计量码microtime()在PHP和C#中的秒表类来计算你的程序要找准热点一块的运行时间。

假设你已经做了一切,仍然觉得'插入单行时间太长,则有几个方面去探索。 太多的指标可能是检查的第一件事。

看到你的程序,我敢打赌,安德斯·亚伯是正确的,你插入的时候失去你的时间在HTTP开销,不

另一种approache将是整个列表发送到PHP代码,然后用一个多行INSERT到只有一条语句插入的一切:

INSERT INTO codes (code,Active)
VALUES
('code_1', true),
('code_2', false),
('code_3', true),
('code_4', false),
('code_5', true)

但我仍然认为这是你发送每个码为一个POST到正在采取所有的时间后端的概念...

200随后的Web请求的延迟大概是什么的查杀性能。 两个建议:

  • 更改PHP代码接受过它的完整列表和循环。
  • 使用Parallel.Foreach在C#代码并行运行的要求。

我知道你没有明确询问的安全性,但逃不过你的用户字段!你 永远也不会直接使用$_GET$_POST在查询中的变量。 首先必须转 ​​义。 您当前的代码是剥削敞开的。 您可以使用逃脱每个字段mysql_real_escape_string()

请参阅:http://php.net/manual/en/function.mysql-real-escape-string.php

总之,真正回答你的问题,你可能想寻找到的MySQL Connector / NET。 它是直接连接到MySQL服务器,并与标准的集成库System.Data班。

分类:C# 时间:2012-05-09 人气:0
本文关键词: 性能,PHP和MySQL,SQL
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.742 (s). 10 q(s)