I am trying to check if there is a project name already in the database, but I cannot get it to work, I have the insert working just fine, so I commented out what I was trying to work with(not working)
here is my C#
protected void CreateProject_Click(object sender, EventArgs e)
{
var insCmd = new SqlCommand("INSERT INTO Projects (TesterName, ProjectName, ProjectDescription, DueDate, DateAssigned, Platform) values (@TesterName, @ProjectName,@ProjectDesc, @DueDate, @DateAssigned, @Platform)");
insCmd.Parameters.AddWithValue("@ProjectName", txtProjectName.Text);
insCmd.Parameters.AddWithValue("@ProjectDesc", txtProjectDesc.Text);
insCmd.Parameters.AddWithValue("@TesterName", ddlTester.SelectedValue);
insCmd.Parameters.AddWithValue("@DateAssigned", txtStartDate.Text);
insCmd.Parameters.AddWithValue("@DueDate", txtEndDate.Text);
insCmd.Parameters.AddWithValue("@Platform", TxtProjectPlatform.Text);
//if (!projId())
//{ }
//else
//{
using (var cnn = new SqlConnection(ConfigurationManager.ConnectionStrings["ProjectsAndTasksTestConnectionString"].ConnectionString))
{
insCmd.Connection = cnn;
cnn.Open();
insCmd.ExecuteNonQuery();
cnn.Close();
}
//}
ClientScript.RegisterStartupScript(this.GetType(), "insert-success", "alert('Project created');", true);
}
/*public bool projID()
{
using (var cnn = new SqlConnection(ConfigurationManager.ConnectionStrings["ProjectsAndTasksTestConnectionString"].ConnectionString))
{
cnn.Open();
string query = "Select ProjectdName FROM Projects WHERE ProjectName= '" + txtProjectName.Text + "'";
SqlCommand cmd = new SqlCommand(query, cnn);
SqlDataReader dr;
dr = cnn.ExecuteReader();
while (dr.Read())
{
projID = dr["projID"].ToString();
if (projID != "0")
{
ClientScript.RegisterStartupScript(this.GetType(), "insert-fail", "alert('Project Name Already Exists');", true);
return false;
}
cnn.Close();
}
return true;
}
}*/
VulpesPosted Feb 4, 2015, 5:36 PM
public bool projID()
{
bool alreadyExists = false;
using (var cnn = new SqlConnection(ConfigurationManager.ConnectionStrings["ProjectsAndTasksTestConnectionString"].ConnectionString))
{
cnn.Open();
string query = "Select ProjectdName FROM Projects WHERE ProjectName= '" + txtProjectName.Text + "'";
SqlCommand cmd = new SqlCommand(query, cnn);
SqlDataReader dr = cmd.ExecuteReader(); // EDITED
if(dr.HasRows)
{
ClientScript.RegisterStartupScript(this.GetType(), "insert-fail", "alert('Project Name Already Exists');", true);
alreadyExists = true;
}
dr.Close();
}
return alreadyExists;
}
gerald vincePosted Feb 4, 2015, 6:31 PM
VulpesPosted Feb 4, 2015, 6:05 PM
The method is now returning true rather than false if the record already exists.
To get it to return false instead - so that, hopefully, your INSERT will still work - just change:
return alreadyExists;
to:
return !alreadyExists;
gerald vincePosted Feb 4, 2015, 5:49 PM
SqlDataReader dr = cnn.ExecuteReader();
to
SqlDataReader dr = cmd.ExecuteReader();