2009-01-24 103 views
0

我是一名PHP程序员,我想用开发人员开发一个网站.net 我知道asp.net在处理数据库方面有许多不同的方法。不过,我是用PHP编程方式的例子,例如:我如何使用PHP程序在ASP.net中使用PHP方法

$query = "select * from table where user_id > 2" 
$result = mysql_query($query); 

while($row = mysql_fetch_array($result)){ 

echo "username is: ".$row["username"]."<br>"; } 

问题是“我可以用PHP方式处理asp.net吗?”

回答

4

当然...学习C#(有点类似的语法),或者使用下面的一个发展:

Other .NET Powered Languages

我老实给你的建议是,如果你想开发ASP.NET或.NET在一般情况下,你应该学习C#。我做到了,我很高兴做到了。

+0

+1为Phalanger,有趣的项目。 – falstro 2009-01-24 15:54:30

+0

感谢这个有用的信息,我想我会尝试学习C#,因为我喜欢采用成熟的技术,并且您在这里列出的这些项目应该很好,但作为PHP程序员的解决方案似乎不是很好的支持,谢谢再次 – ahmed 2009-01-24 17:11:21

2

也许你应该考虑你编程的方式。混合逻辑,演示和数据访问在任何语言中都不是一个好主意。你展示的例子不是“PHP方式”。是的,在php中可以这样写,但这不是一个好习惯。我认为,通过学习asp.net,你也可以学到很多关于编程的知识,而且你不应该尝试在asp中编程。

+0

感谢您的好建议,我相信你是正确的,但有时我需要把事情做完,不管我用哪种方式 - 尤其是如果我必须交出大学作业:),谢谢 – ahmed 2009-01-24 17:06:07

1

在asp.net中有很多方法。这有点令人困惑,但它们都基本相同。区别在于您使用的数据访问类型。

使用企业库(你需要下载这个)可能是最亲密的方法之一:

Database database = DatabaseFactory.CreateDatabase(); 
string sqlCommand = @"SELECT * FROM Users WHERE [email protected]"; 
System.Data.Common.DbCommand dbCommand = database.GetSqlStringCommand(sqlCommand); 

DataSet dataSetGroup = database.ExecuteDataSet(dbCommand); 
DataTable dt = dataSetGroup.Tables[0]; 

foreach (DataRow dr in dt.Rows) 
{ 
    Response.Write("User name is: " + dr["Username"].ToString() + "<br/>"); 
} 

企业库只是一个微软库,简化了数据访问。如果你不使用它,你可以直接访问数据库,但是它需要更多的线来处理数据连接的打开和关闭,你必须更加小心打开和关闭连接。

其他的方式来做到这一点是:

  1. 使用强类型数据集
  2. 使用LinqToSql或LinqToEntities和ADO.net框架

他们都不同,但在结构上类似,你将查询数据库,然后做一个foreach(你也可以用while)循环你的数据。

我最近一直在使用LinqToSql并且更喜欢那种方法。 Scott Gu的博客有很多关于如何使用LinqToSql的帖子(链接到最后一篇文章,因此您可以看到之前的所有文章): http://weblogs.asp.net/scottgu/archive/2007/09/07/linq-to-sql-part-9-using-a-custom-linq-expression-with-the-lt-asp-linqdatasource-gt-control.aspx

+0

感谢这个有用的信息,对于博客 – ahmed 2009-01-24 17:02:45

2

C#3。0提供了非常强大的语法,允许您以自然和安全的方式(使用参数化查询)与数据库进行交互。你在C#与LINQ2SQL查询看起来像:

var query = from t in context.table 
      where t.user_id > 2 
      select t; 

你可能会使用一个中继器在您的视图,以便你可以只提供查询的数据源(有办法在标记要做到这一点,太)在你的代码隐藏。

// use ToList so context can be disposed 
nameRepeater.DataSource = query.ToList(); 

您的标记看起来像:

<asp:Repeater runat="server" ID="nameRepeater"> 
    <ItemTemplate> 
    username is: 
    <asp:Label runat="server" 
       ID="nameLabel" 
       Text='<%= Bind("username") %>' /> 
    <br /> 
</asp:Repeater> 

(线拆分可读性)

或者你可以使用ASP.NET MVC在这种情况下,选择代码会在你的控制器你可以在强类型视图中使用更像PHP语法的东西。

<% foreach (Table t in ViewData.Model) { %> 
    username is: <%= t.username %><br/> 
<% } %>