我对ASP.NET很陌生,我认为我没有按照最新.NET框架中所有功能的方式使用它。我目前使用的是.NET framework 4.0。代码中有一些错误,别介意,我似乎在使用古老的技术。
我把一切都安排成这样。
我的文件名为webservice.cs,该文件包含这样的Web方法:
[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;
}
在我的代码中,我这样做是为了调用正确的函数(下面的函数与之前的web方法无关,只是为了说明许多SQL查询中的一个
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";
}
难道我不能用一种更有效的方式来做这件事吗。我构建了一个通用方法,所有的web方法都可以用来插入数据或读取数据,并为我保存了一些代码,但我看到了类似LINQ的东西。它的代码比我少得多。请帮助我或向我指出一种不那么古老的编码方式;)
好吧,让我看看。。。。
-
如果不能将业务逻辑与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,而不是"thisismysuppaduppmethod",并且您的变量名称并不明确。记住,你不是为机器编写代码,而是为人们阅读。代码应该易于阅读,任何查看代码的人都必须立即理解它的用途。我非常怀疑,如果你将来需要修改你的代码,比如说在2-3年后,在不深入研究代码的情况下,你会立即看到string pro1,int pro2的实际含义。
-
我建议你用英语而不是母语。如果你需要代码方面的帮助(或者向你的团队介绍一位新同事),这通常被认为是一种更好的做法,因为你不必解释"这代表什么??"。
我认为您想要的是访问数据库的更好方法。您应该先了解LinqToSQL和实体框架。这些技术在处理数据存储时提供了一种更现代、更易于使用的方法。