-1

我对 ASP.NET 还是很陌生,我认为我并没有以他们的方式使用它,因为它应该与最新的 .NET 框架中包含的所有功能一起使用。我目前正在使用 .NET 框架 4,0。代码中有一些错误,不要介意他们介意我似乎在使用古老的技术。

我已经把所有的东西都组织成这样了。

我的文件名为 webservice.cs,该文件包含这样的 webmethods:

[WebMethod]
public string laggtillprodukt(string pro1, int pro2)
{
    int sqlstatus;
    string sqlinsertstringfull = "INSERT INTO t_produkter (produkt_namn) VALUES ('" + pro1 + "');" +
                                 "SELECT produkt_id FROM t_produkter WHERE (produkt_id = SCOPE_IDENTITY()); " +
                                 "INSERT INTO t_produktegenskaper (produkt_id, egenskaps_id) " +
                                 "SELECT SCOPE_IDENTITY(), egen.egenskap_id " +
                                 "FROM t_kopplingmallegenskaper as egen " +
                                 "WHERE egen.mall_id = " + pro2 + ";";

   sqlstatus = executeWriteSqlQuery(sqlinsertstringfull);

   return "These values has been added to the db" + pro1 + " and " + pro2 + " SQL STATUS:" + sqlstatus;
}

在我后面的代码中,我这样做是为了调用正确的函数(下面的那个与 webmethod 无关,之前它只是为了说明许多 SQL QUERIES 之一。

 protected void laggtillnymallbutton_Click(object sender, EventArgs e)
{
    WebService globalwebservice = new WebService();

    if (string.IsNullOrWhiteSpace(laggtillnymall.Text))
    {
        Label1.Text = "String cannot be empty or just whitespaces!";
    }
    else
    {
        globalwebservice.laggtillmall(laggtillnymall.Text.Trim());
        Label1.Text = "Template added";
    }

我不能以更有效的方式做到这一点。我已经构建了一个通用方法,所有 webmethod 都使用它来插入数据或读取数据,为我节省了一些代码,但我见过像 LINQ 这样的东西。那代码比我少得多。请帮助我或指出一种不那么古老的编码方式;)

4

2 回答 2

4

嗯,让我看看……

  • 您无法将业务逻辑与 DAL 分离,这是一种非常糟糕的方法。数据访问应该在一个完全独立的层,它不属于 web 服务。

  • 您的代码非常容易受到 SQL 注入https://www.owasp.org/index.php/SQL_Injection的攻击。相反,您应该根据需要使用参数化查询 http://www.techrepublic.com/article/shorten-development-time-by-using-parameterized-queries-in-adonet/6093390 或存储过程。

  • 你的命名约定也不是很好......在.NET中,我们通常更喜欢使用camelCase,而不是“thisismysuppaduppamethod”,并且你的变量名不是很清楚。请记住,您不是在为机器编写代码,而是为人们阅读。代码应该易于阅读,任何查看您的代码的人都必须立即理解其目的是什么。我非常怀疑,如果您将来需要修改代码,比如说在 2-3 年后,您会立即看到 string pro1, int pro2 的实际含义,而无需深入研究代码。

  • 我建议使用英语而不是您的母语。如果您需要有关代码的帮助(或向您的团队介绍一位新同事),这通常被认为是一种优越的做法,因为您不必解释“这代表什么??”。

于 2012-07-21T14:10:31.587 回答
1

我认为您要问的是访问数据库的更好方法。对于初学者,您应该研究Linq-To-SQL实体框架。这些技术提供了一种更现代且更易于使用的方法来处理您的数据存储。

于 2012-07-21T13:51:32.627 回答