1

使用我的应用程序,我想确保用户在文本框中没有输入任何值,然后单击
保存按钮以在 sqlserver db 中发送数据。数据库端验证可防止这种违规行为并设置我的应用程序将捕获并显示的 ErrorMessage给用户的有意义的信息
。对于每个必填字段,我将其设置为 NOT NULL。但是当我测试时,我仍然可以输入
输入空文本框值,它会被插入而没有值。我错过了什么?

string connectionstring = "Data Source=abcdef;Initial Catalog=HMS;Persist Security Info=True;User ID=sysad;Password=abcdef";
        SqlConnection connection = new SqlConnection(connectionstring);

        string SelectStatement = "SELECT * FROM tablename where RegistrationNo = @RegistrationNo";
        SqlCommand insertcommand = new SqlCommand(SelectStatement, connection);
        insertcommand.Parameters.AddWithValue("@RegistrationNo", textBox10.Text);
        SqlDataReader reader;
        try
        {
            connection.Open();
            reader = insertcommand.ExecuteReader();

            while (reader.Read())
            {
                textBox11.Text = reader["RegistrationNo"].ToString();
                textBox1.Text = reader["Appearance"].ToString();
                textBox2.Text = reader["VolumePH"].ToString();
                textBox3.Text = reader["Mobility"].ToString();
                textBox4.Text = reader["Viability"].ToString();
                textBox5.Text = reader["Head"].ToString();
                textBox6.Text = reader["MiddlePiece"].ToString();
                textBox7.Text = reader["Tail"].ToString();
                textBox8.Text = reader["SpermCount"].ToString();
                dateTimePicker1.Text = reader["Date"].ToString();
                textBox9.Text = reader["Comment"].ToString();



            }//end while
            reader.Close();
        }
        catch (Exception ex)
        {
            throw ex;

        }//end catch
4

4 回答 4

7

我错过了什么?

null我认为您缺少和空字符串之间的区别。

数据库区分nullempty。如果你ToString成功了,那么你有一个非空字符串,所以 DB 很乐意接受它作为一个有效值。

一般来说,使用 DB 进行用户端验证是有些浪费的:如果知道该字段不能为空,则应在 UI 中检查;数据库验证应作为保持数据模型完整性的最后手段。

于 2012-06-26T12:30:45.920 回答
1

您可以在服务器端代码中使用 requiredfield 验证器并进行验证。如果它是空字符串,则返回错误本身。

去 sql server 并抛出错误是不好的。

if(txtBox.Text.Trim() == string.Empty)
  //throw "cannot be null error to user;
于 2012-06-26T12:33:49.567 回答
0

按下按钮时检查字段可能是个好主意。例子:

private void button_Click(object sender, EventArg e){
   if (textbox1.Text == ""){
      MessageBox.Show("Your message to the user");
   }
}

希望能帮助到你

于 2012-06-26T12:36:55.583 回答
0

最好在用户界面中检查用户输入。如果用户必须输入一些值,您应该在尝试将其插入数据库之前对其进行检查。

于 2012-06-26T12:45:36.040 回答