1

私のアプリケーションでは、ユーザーがテキストボックスに値を入力しないかどうかを確認し、
保存ボタンをクリックしてsqlserverデータベースにデータを送信します。データベース側の検証はこの違反を防ぎ、アプリケーションがキャッチして表示するErrorMessageを設定します。ユーザーへの意味のあるメッセージ
。必須フィールドごとに、NOTNULLに設定します。しかし、私がテストするとき、私はまだ
空のテキストボックス値を入力することができ、値なしで挿入されます。私は何が欠けていますか?

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は、そこにnull以外の文字列があるため、DBはそれを有効な値として受け入れます。

一般に、ユーザー側の検証にDBを使用することは、いくぶん無駄です。フィールドが空であってはならないことがわかっている場合は、UIでチェックする必要があります。DB検証は、データモデルの整合性を維持する最後の手段として機能する必要があります。

于 2012-06-26T12:30:45.920 に答える
1

サーバー側のコードでrequiredfieldバリデーターを使用して、検証できます。空の文字列の場合は、エラーが返されます。

SQLサーバーに移動してエラーをスローするのは悪いことです。

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 に答える