【发布时间】:2021-04-29 08:12:16
【问题描述】:
这是我的 CustomerRegister 类,但我似乎无法将 addressTextBox 中的数据输入到 CustomerTbl。
DataBase dbObj = new DataBase();
string selStr = "Update CustomerTbl Set customer_address = '" + addressTextBox.Text + "' Where custID = " + "NULL";
int i = dbObj.ExecuteNonQuery(selStr);
这是我的数据库类,但return comdObj.ExecuteNonQuery(); 不起作用,因为没有名为 NULL 的此类 custID。那么我该如何编程,以便在新用户注册时能够不断更新数据库?
class DataBase
{
string connStr = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=D:\OOPG\Banking Mini Project Raynard\Banking Mini Project Raynard\Database1.mdf;Integrated Security = True";
SqlConnection connObj;
SqlCommand comdObj;
SqlDataReader dR;
public DataBase()
{
connObj = new SqlConnection(connStr);
connObj.Open();
}
public SqlDataReader ExecuteReader(string selStr)
{
comdObj = new SqlCommand(selStr, connObj);
dR = comdObj.ExecuteReader();
return dR;
}
public int ExecuteNonQuery(string sqlStr)
{
comdObj = new SqlCommand(sqlStr, connObj);
return comdObj.ExecuteNonQuery();
}
}
【问题讨论】:
-
重要:您的 SQL 方法对于 SQL 注入来说是成熟的。您应该从不连接用户输入来创建 SQL(这对于 i18n/l10n 和其他原因也很不利)。总是总是总是:使用参数。这真的很很重要(否则有人可能会轻易破坏或泄露您的数据;老实说,这是破解应用程序的最简单方法)
-
在明显的 sql 注入弱点之外:实际上您不应该尝试重用连接、命令和其他 ado.net 实例。创建、使用、处置通常被认为是最佳实践。
-
查看How can I add user-supplied input to an SQL statement? 了解如何使用sql参数。请参阅Exploits of a Mom 以获取一个有趣的卡通片来说明 sql 注入如何损害您的应用程序数据。
标签: c# visual-studio-2019