PDA

Click to See Complete Forum and Search --> : [1.0/1.1] Insert a new row to a table


urpalshu
Jun 4th, 2006, 04:47 PM
This program does not give me any error when I build it. But when I finish it. The table does not get updated with the new data which I supply in my test application in the Form Load.

Please could you tell me how I could debug it, to rectify the save.
Or please could you help me resolve this problem.
This there are no errors. I believe there is proper connection established. The Table is empty, do you think this is why it is not updating the first row?
-----------------------------------------------------------------------
This is how I have created my table: I have not yet entered any data in it.
CREATE TABLE [dbo].[tblPeople] (
[pkPersonID] [int] IDENTITY (50, 1) NOT NULL ,
[LastName] [varchar] (40) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[FirstName] [varchar] (40) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[Title] [varchar] (80) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[CompanyName] [varchar] (80) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[Address] [varchar] (240) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[HomePhone] [varchar] (40) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[WorkPhone] [varchar] (40) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[Fax] [varchar] (40) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[Email] [varchar] (120) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[WebPage] [varchar] (120) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[Notes] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
----------------------------------------------------
This is my code in the main form of Windows Application
private void Form1_Load(object sender, System.EventArgs e)
{
AtWorkUtilities.DB db = new AtWorkUtilities.DB("server=SUSHMA;database=ContactMngr;uid=sa;pwd=password");
BusinessObjects.Person o = new BusinessObjects.Person(db);
DataRow dr;
dr = o.GetRow();
dr[1] = "Joe";
dr[2] = "Shmo";
dr[3] = "New Company";
dr[4] = "http://www.shmo.com";
o.SaveRow(dr);
if (o.IsValid)
{o.Save();}else
{ MessageBox.Show(o.ValidationError("","",""));}
db.Close();
}
---------------------------------------------
This is my BaseServices Class
public abstract class BaseServices
{
private ArrayList m_arrErrors;
public DB m_DB;
public SqlDataAdapter m_DA;
public SqlCommandBuilder m_CB;
public DataSet m_DS;
public BaseServices(DB DataBase, string strSQL)
{
m_DB = DataBase;
m_DA = new SqlDataAdapter(strSQL, m_DB.Connection);
m_CB = new SqlCommandBuilder(m_DA);
m_DS = new DataSet();
m_DA.Fill(m_DS);
}
public DataRow GetRow()
{
if (m_DS.Tables[0].Rows.Count > 0)
{
return m_DS.Tables[0].Rows[0];
}else
{ return m_DS.Tables[0].NewRow(); }
}
public virtual void SaveRow(DataRow dr)
{
//Handle new row
if (m_DS.Tables[0].Rows.Count == 0)
{
m_DS.Tables[0].Rows.Add(dr);
return;
}
//Handle existing row
m_DS.Tables[0].Rows[0].BeginEdit ();
foreach(DataColumn val in m_DS.Tables[0].Columns)
{
m_DS.Tables[0].Rows[0].Equals(dr[val]);
}
m_DS.Tables[0].Rows[0].EndEdit();
}
}
----------------------------------------------------------------
This is my Person class
public class Person : BaseServices
{
public Person() : base(new DB(), "SELECT * FROM tblPeople WHERE pkPersonID= 0")
{}
public Person(DB db) : base(db, "SELECT * FROM tblPeople WHERE pkPersonID Like('')")
{}
public Person(DB db, int ID) : base(db, "SELECT * FROM tblPeople WHERE pkPersonID = " + ID.ToString())
{}
public void Validate()
{
ClearErrors();
foreach(DataRow dr in m_DS.Tables[0].Rows)
{
if ((dr.RowState == DataRowState.Added) | (dr.RowState == DataRowState.Modified ))
{ ValidateRow(dr); }
}
}
private void ValidateRow(DataRow dr)
{
if ( (dr.IsNull("CompanyName")) && (dr.IsNull("LastName")) && (dr.IsNull("FirstName")) )
{
AddError("You must provide the company name, the
person's First and Last Name.");
}
if ( (!dr.IsNull("CompanyName")) && (!dr.IsNull("LastName")) && (!dr.IsNull("FirstName")) )
{
if ((dr["CompanyName"].ToString() == "") && (dr["LastName"].ToString() == "") && (dr["FirstName"].ToString() == ""))
{
AddError("You must provide the company name, person's last and first name.");
}
}
if((!dr.IsNull("LastName")) )
{
if (dr.GetColumnError("LastName").Length > 40)
{
AddError("Last name must be less than 40 characters long.");
}
}
if( (!dr.IsNull("FirstName")) )
{
if (dr.GetColumnError("FirstName").Length > 40)
{
AddError("First name must be less than 40 characters long.");
}
}
if( (!dr.IsNull("Title").Equals("Title")) )
{
if (dr.GetColumnError("Title").Length > 80)
{
AddError("Title must be less than 80 characters long.");
}
}
if( (!dr.IsNull("Title").Equals("Title")) )
{
if (dr.GetColumnError("CompanyName").Length > 80)
{
AddError("Company Name must be less than 80 characters long.");
}
}
if( (!dr.IsNull("Title").Equals("Title")) )
{
if (dr.GetColumnError("Address").Length > 240)
{
AddError("Address must be less than 240 characters long.");
}
}

if( (!dr.IsNull("Title").Equals("Title")) )
{
if (dr.GetColumnError("HomePhone").Length > 40)
{
AddError("Home Phone must be less than 40 characters long.");
}
}

if( (!dr.IsNull("Title").Equals("Title")) )
{
if (dr.GetColumnError("WorkPhone").Length > 40)
{
AddError("Work Phone must be less than 40 characters long.");
}
}
if( (!dr.IsNull("Title").Equals("Title")) )
{
if (dr.GetColumnError("Fax").Length > 40)
{
AddError("Fax number must be less than 40 characters long.");
}
}

if( (!dr.IsNull("Title").Equals("Title")) )
{
if (dr.GetColumnError("Email").Length > 120)
{
AddError("Email address must be less than 120 characters long.");
}
}

if( (!dr.IsNull("Title").Equals("Title")) )
{
if (dr.GetColumnError("WebPage").Length > 120)
{
AddError("Web Page Address must be less than 120 characters long.");
}
}
}
/* The base SaveRow method stores the DataRow into DataSet
* whether it's a new or existing row.
public override void SaveRow(DataRow dr)
{
base.SaveRow(dr);
Validate();
}

/*We separate the SaveRow method from the Save method to
public void Save()
{
if (!this.IsValid)
{
throw new PersonException(this.ValidationError("The following errors were detected in your data:" + Environment.NewLine,"",""));
}
}
}
-------------------------------------------------------------





Kindly help
Regards