C# 如何检查用户是否将寄存器字段留空
我有登记表。在这种情况下,它只包含用户名和密码 当我在SQL Server中创建表时,我将两列都设置为NOTNULL,但当我尝试在不输入用户名或密码的情况下注册时,不会出现错误,并且我的表单“注册”新用户(例如,如果我没有输入密码) 这是我的代码,如果有人能帮我解决这个问题,也可以说,如果有其他错误/写得不好的代码,因为我对所有这些都是新手。我认为我在SQL注入问题上做得很好,但你们永远不会知道。非常感谢您的回复C# 如何检查用户是否将寄存器字段留空,c#,sql-server,count,null,C#,Sql Server,Count,Null,我有登记表。在这种情况下,它只包含用户名和密码 当我在SQL Server中创建表时,我将两列都设置为NOTNULL,但当我尝试在不输入用户名或密码的情况下注册时,不会出现错误,并且我的表单“注册”新用户(例如,如果我没有输入密码) 这是我的代码,如果有人能帮我解决这个问题,也可以说,如果有其他错误/写得不好的代码,因为我对所有这些都是新手。我认为我在SQL注入问题上做得很好,但你们永远不会知道。非常感谢您的回复 private void button1_Click(object sender,
private void button1_Click(object sender, EventArgs e)
{
SqlConnection cn = new SqlConnection("Data Source=HOME-PC;Initial Catalog=TestDB1;Integrated Security=True");
try
{
cn.Open();
String query = "INSERT INTO dbo.users (uUsername, uPassword) VALUES (@uUsername, @uPassword)";
SqlCommand command = new SqlCommand(query, cn);
command.Parameters.AddWithValue("@uUsername", textBox1.Text);
command.Parameters.AddWithValue("@uPassword", textBox2.Text);
command.ExecuteNonQuery();
MessageBox.Show("OK");
this.usersTableAdapter.Fill(this.testDB1DataSet.users);
}
catch (Exception ex)
{
MessageBox.Show("Error");
}
finally
{
cn.Close();
}
}
如果我理解正确的话,您有一个用C#编写的应用程序,它可以与SQL Server后端交互 您应该能够在C代码中添加一个复选框,以便在单击按钮时检查文本框是否为空。我的C#非常生锈,但可以这样做:
if (string.IsNullOrWhiteSpace(textBox1.Text) || string.sNullOrWhiteSpace(textBox2.Text))
{
messagebox.show("Invalid entry");
}
遗憾的是,我没有VisualStudio来检查这一点,但在执行SQL操作之前,我会检查文本框是否为空
另外,我会将文本框的名称更改为您能记住的名称,否则在维护代码时,您会发现这是一场噩梦。检查
textBox1.Text
和textBox1.Text
是否为空,如果为空,则根本不运行SQL命令。您是否可以选择使用Entity Framework,我强烈建议使用它,而不是嵌入您自己的查询。它将处理比您想象的更多的注入场景,更不用说随着时间的推移会随着新场景的发现而更新。这看起来像java,而不是c#,String.IsNullOrEmpty(username.Text)。抱歉,现在已修复。谢谢你发现了它。@Welshboy-是的,我明白你的意思,所以我把它改成了c#@Marius Bancilla-非常感谢@jtimperley-谢谢,我会重新编写它,并使用“使用”选项,我读过它,但直到最近我还在学习使用它。是的,它很有效,谢谢。我还添加了textbox1.clear();和textbox2.clear();是的,谢谢大家。我得到的所有坏名声分数都是值得的;)