Mae*_*024 1 .net c# sql database-design
使用C#将数据输入和输出SQL表
我构建了一个C#应用程序,将数据放入SQL表中.
我目前在.net中使用SqlConnection类.从这篇文章开始. http://www.codeproject.com/KB/database/sql_in_csharp.aspx
我曾经考虑过将Linq转换为SQL,但之前没有这样做过,也不确定如何起床.
那么今天我遇到了一个错误,我试图在其中添加包含"'"的数据,这打破了我的插入语句.我做了一些研究,开始想知道潜伏着什么其他问题.如果我尝试添加数据"drop table"怎么办?
我的问题是,是否有更好的数据插入模型?我看看Linq?或者在输入之前检查我的所有数据?
您发现了SQL注入攻击.仅仅根据您指定的原因将用户提供的数据附加到SQL查询是不好的策略.系统的任何用户都可以通过注入一些SQL来窃取或破坏您的数据.
在链接中描述了处理它的方法,但基本上你指定参数并让提供的类处理正确地转义数据,这样如果有人通过"Drop Table",它将只是作为数据输入.
这是CodeBetter.com的一个很好的例子
SqlCommand command = connection.CreateCommand();
command.CommandText = "SELECT * FROM Customers WHERE CustomerID = @CustomerID";
command.Parameters.Add(
new SqlParameter("@CustomerID", SqlDbType.NChar, 5)).Value = customerID;
Run Code Online (Sandbox Code Playgroud)
或者,您可以随意使用LINQ to SQL.它将为您处理此问题,从开发人员的角度来看,它更容易使用.您可以将数据库拖放到代码中,它将完全映射每个表.然后,您可以在代码中编写LINQ版本的SQL语句,您将获得代码完成并编译时间检查错误. 这个问题将帮助您入门.
这里有一些简单的LINQ代码,可以让你从数据库中读取客户,将他/她的名字写在屏幕上,然后更新他的个性化问候语(所有安全的SQL注入):
Customer myCustomer = (
from cust in myDatabase.Customers
where cust.CustomerID == userPassedCustomerID
select cust).Single();
Console.WriteLine(myCustomer.FullName);
myCustomer.PersonalizedGreeting = userPassedGreeting;
myDatabase.SubmitChanges();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1066 次 |
| 最近记录: |