私は簡単なasp.netフォームを作成しました。ユーザーはトレーニングの日付のリストを表示し、その日付に登録することができます。彼らは自分の名前と従業員IDを手動で入力します(dulpicate employeのIDS)ので、私は、C#でこれを確認する方法を理解する必要があります。..sqlデータベースを挿入する前に既存のレコードを確認します
コード:
public string GetConnectionString()
{
//sets the connection string from your web config file "ConnString" is the name of your Connection String
return System.Configuration.ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;
}
private void checkContraint()
{
SqlConnection conn = new SqlConnection(GetConnectionString());
string sql = "Select "; //NEED HELP HERE
}
private void InsertInfo()
{
var dateSelected = dpDate.SelectedItem.Value;
SqlConnection conn = new SqlConnection(GetConnectionString());
string sql = "INSERT INTO personTraining (name,department,title,employeeid,training_id, training,trainingDate,trainingHour, trainingSession)SELECT @Val1b+','[email protected],@Val2,@Val3,@Val4,training_id,training,trainingDate,trainingHour,trainingSession FROM tbl_training WHERE training_id [email protected]_id ";
try
{
conn.Open();
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.Parameters.AddWithValue("@Val1", txtName.Text);
cmd.Parameters.AddWithValue("@Val1b", txtLname.Text);
cmd.Parameters.AddWithValue("@Val2", txtDept.Text);
cmd.Parameters.AddWithValue("@Val3", txtTitle.Text);
cmd.Parameters.AddWithValue("@Val4", txtEmployeeID.Text);
//Parameter to pass for the select statement
cmd.Parameters.AddWithValue("@training_id", dateSelected);
cmd.CommandType = CommandType.Text;
//cmd.ExecuteNonQuery();
int rowsAffected = cmd.ExecuteNonQuery();
if (rowsAffected == 1)
{
//Success notification // Sends user to redirect page
Response.Redirect(Button1.CommandArgument.ToString());
ClearForm();
}
else
{
//Error notification
}
}
catch (System.Data.SqlClient.SqlException ex)
{
string msg = "Insert Error:";
msg += ex.Message;
throw new Exception(msg);
}
finally
{
conn.Close();
}
}
protected void Button1_Click(object sender, EventArgs e)
{
checkContraint();
InsertInfo();
従業員IDごとにセッションごとに1つのトレーニングに制限する必要がありましたか?または、日付ごと、セッションごとに1つ、など? –
テーブル全体で1人の従業員ID(ユニーク)を制限してください – user959443
Royiの答えがそうですね。チェック制約メソッドの個別の検証クエリではありませんが、InsertInfoのエラー通知ハンドラにヒットするはずです。 –