Issues with AddInParameter() -- VS 2008 / .NET 3.5

Topics: Data Access Application Block, Enterprise Library Core
May 10, 2010 at 9:18 PM

Hello all,

I tried to dig around in the documentation pretty thoroughly but I'm new to EntLib and might be missing something. Hoping that I can at least pave the way for other newcomers.

I'm trying to do a simple INSERT statement into one SQL2005 database table.

Process should work as follows: button clicked on ASP.NET page --> Fires event --> new instance of a TeaserResponse() class with form data supplied --> Adds the form data to the database.


Code from the Event in the CodeBehind File:

    public void SignUpbutton_Click(object sender, ImageClickEventArgs e)
    {
        string newName = TextBoxName.Text;
        string newEMail = TextBoxEmail.Text;
        bool isAdmin = CheckBoxAdmin.Checked;
        bool isStudent = CheckBoxStudent.Checked;
        bool isTeacher = CheckBoxTeacher.Checked;
        bool isOther = CheckBoxOther.Checked;

        TeaserResponse response = new TeaserResponse(newName, newEMail, isTeacher, isAdmin, isStudent, isOther);

}


Code from the TeaserResponse class (all code so you can see references, etc.):

using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using Microsoft.Practices.EnterpriseLibrary.Data;
using Microsoft.Practices.EnterpriseLibrary.Data.Sql;
using Microsoft.Practices.EnterpriseLibrary.Common;
using Microsoft.Practices.EnterpriseLibrary.Common.Configuration;
using System.Data.Sql;
using System.Data.SqlClient;
using System.Data.Common;

namespace StudentVault.TeaserUI.Repository
{
public class TeaserResponse
{

// Member Variables private string _name;
private string _email;
private bool _isTeacher;
private bool _isStudent;
private bool _isAdmin;
private bool _isOther;
private Database _db;


// Public Properties public string Name
{
get { return _name;
}

set { _name = value; } } public string EMail
{
get { return _email;
}

set { _email = value; } } public bool IsAdmin
{
get { return _isAdmin;
}

set { _isAdmin = value; } } public bool IsStudent
{
get { return _isStudent;
}

set { _isStudent = value; } } public bool IsTeacher
{
get { return _isTeacher;
}

set { _isTeacher = value; } } public bool IsOther
{
get { return _isOther;
}

set { _isOther = value; } } public Database DB
{
get { return _db;
}

set { _db = value; } } // Constructors public TeaserResponse(string newName, string newEmail, bool newIsTeacher, bool newIsAdmin, bool newIsStudent, bool newIsOther)
{
this.Name = newName;
this.EMail = newEmail;
this.IsAdmin = newIsAdmin;
this.IsOther = newIsOther;
this.IsStudent = newIsStudent;
this.IsTeacher = newIsTeacher;

//tring connStr = ConfigurationManager.ConnectionStrings["SVProd"]; //this.DB = new SqlDatabase(connStr); this.DB = EnterpriseLibraryContainer.Current.GetInstance<Database>();

this.AddResponse();
}


//Methods public void AddResponse()
{
using (DbConnection conn = this.DB.CreateConnection())
{
conn.Open();
DbTransaction trans = conn.BeginTransaction();

try { string SQLcmd = "INSERT INTO sv_TeaserResponses (Name, EMail, teacher, student, admin, other) VALUES (@Name, @EMail, @teacher, @student, @admin, @other)";
DbCommand cmd = DB.GetSqlStringCommand(SQLcmd);
                    DB.AddInParameter(cmd, "@Name", DbType.String, this.Name);
                    DB.AddInParameter(cmd, "@EMail", DbType.String, this.EMail);
                    DB.AddInParameter(cmd, "@admin", DbType.Boolean, this.IsAdmin);
                    DB.AddInParamater(cmd, "@teacher", DbType.Boolean, this.IsTeacher);
                    DB.AddInParamater(cmd, "@student", DbType.Boolean, this.IsStudent);
                    DB.AddInParamater(cmd, "@other", DbType.Boolean, this.IsOther); DB.ExecuteNonQuery(cmd, trans); trans.Commit(); } catch { trans.Rollback(); throw new Exception("Whoa!");
}
}

}


}
}


When I attempt to compile the code, I get the following error on the line "DB.AddInParamater(cmd, "@teacher", DbType.Boolean, this.IsTeacher);" and each similar statement after that (3 of these errors in all):

'Microsoft.Practices.EnterpriseLibrary.Data.Database' does not contain a definition for 'AddInParamater' and no extension method 'AddInParamater' accepting a first argument of type 'Microsoft.Practices.EnterpriseLibrary.Data.Database' could be found (are you missing a using directive or an assembly reference?)

 

What's confusing me is that it doesn't mark the preceding three lines as having anything wrong with them and only marks the second DbType.Boolean statement as an error, so it's not the data type difference either, I don't think.

 

If anyone could help me dig into this, I'd really appreciate it as a newcomer to the EntLib community.

Thanks!

May 11, 2010 at 2:48 AM

Hi SeanKilleen,  

AddInParameter are misspelled in the following lines,  

                    DB.AddInParameter(cmd, "@admin", DbType.Boolean, this.IsAdmin);           => Correct
                    DB.AddInParamater(cmd, "@teacher", DbType.Boolean, this.IsTeacher);     => Misspelled
                    DB.AddInParamater(cmd, "@student", DbType.Boolean, this.IsStudent);     => Misspelled
                    DB.AddInParamater(cmd, "@other", DbType.Boolean, this.IsOther);           => Misspelled
  

It should work fine once this is properly set.

Gino Terrado
Global Technology and Solutions
Avanade, Inc.
entlib.support@avanade.com

 

May 11, 2010 at 12:29 PM

...Wow. Beginner's mistake, indeed. Too much time in front of the keyboard. :)

 

Thank you @AvandeSupport! Really appreciate the quick response.