2011-05-04 37 views
1

我想从数据库表中读取记录后,将多个记录发送到网站。我可以发送一条记录,但无法循环记录并一次发送一条记录。如何从c#发布多个记录到网站?

这里是我使用的代码的一部分:

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); 

req.Method = "POST"; 

req.ContentType = "application/x-www-form-urlencoded"; 

SqlCommand cmd = new SqlCommand("select top 10 field1, field2, field3, field4 prices", conn); 

SqlDataReader rd = cmd.ExecuteReader(); 

WebResponse rs; 
string strNewValue; 

StreamWriter stOut = new StreamWriter(req.GetRequestStream(), System.Text.Encoding.ASCII); 

while (rd.Read()) 

{ 


strNewValue = "field1='" + rd[0].ToString() + "'&field2='" + rd[1].ToString() + "'&field3='AM'&field4=" + rd[2].ToString(); 

stOut.Write(strNewValue); 



} 

stOut.Close(); 

rs = req.GetResponse(); 

这个代码只张贴的最后一条记录。我如何循环查看记录并逐个发布所有记录。

在此先感谢

+0

你确定问题是不是接收器没有正确读取所有的行(它可能会替换每行读取下一行,所以最后一行结束)? – forsvarir 2011-05-04 09:14:00

回答

2

看起来你把所有的记录到同一个HTTP POST - 尝试改变它发布每一条记录 - 是这样的:

SqlCommand cmd = new SqlCommand("select top 10 field1, field2, field3, field4 prices", conn); 

SqlDataReader rd = cmd.ExecuteReader(); 


while (rd.Read()) 
{ 


HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); 

req.Method = "POST"; 

req.ContentType = "application/x-www-form-urlencoded"; 


WebResponse rs; string strNewValue; 

StreamWriter stOut = new StreamWriter(req.GetRequestStream(), System.Text.Encoding.ASCII); 


strNewValue = "field1='" + rd[0].ToString() + "'&field2='" + rd[1].ToString() + "'&field3='AM'&field4=" + rd[2].ToString(); 

stOut.Write(strNewValue); 
stOut.Close(); 
rs = req.GetResponse(); 

} 

rd.Close(); 
+0

ps - 刚刚注意到,为了避免在数据库内容包含字符(如=和)时出现错误,应将rd [0] .ToString()更改为HttpUtility.UrlEncode(rd [0] .ToString() – Nathan 2011-05-04 09:19:43