Avoid creating duplicates in a table without killing the process

I am EXTREMELY new to C#, and but have been sucessfully updating a program which reads an excel file and converts the data to XML.  
My problem is as I cycle thru the data, I don't want to add a duplicate "process" to my table.  The way it is currently setup, the table accepts duplicates and the records are the same except for the GUID value.  This is causing problems with the XML.

This is an excerpt of the code as it currently sits.  I tried adding a .Unique=true to the "Name" column in my table, but it throws an error that I don't know how to catch - and kills the program.  This is probably basic, but I am a real newbie. ;-)  

I am supposed to demo this process next week, and it would make me look really good if this issue was fixed - hence the high points!

//Setup table structure
table = data.Tables.Add("Process");
table.Columns.Add("Name", Type.GetType("System.String")).Unique = true;
table.Columns.Add("LocationID", Type.GetType("System.Int32"));
table.Columns.Add("ProcessID", Type.GetType("System.Int32")).AutoIncrement = true;
table.Columns.Add("GUID", Type.GetType("System.Guid")).Unique = true;



//define method to addProcess
private int addProcess(string process, int locationID)      {
DataRow row = data.Tables["Process"].NewRow();
row["Name"] = process;
row["LocationID"] = locationID;
row["GUID"] = System.Guid.NewGuid();
data.Tables["Process"].Rows.Add(row);

return (int) row["ProcessID"];
}

//Add processes to table
Excel.Range pcell = (Excel.Range) sheet.Cells[2, 3];
string process = getCellValue(pcell);
int processID = addProcess(process, locationID);


ImageryGrlAsked:
Who is Participating?

[Webinar] Streamline your web hosting managementRegister Today

x
 
KahhoeConnect With a Mentor Commented:
Depend on what you do on the duplicate data. When an exception is caught, the codes inside the try bracket are not actually executed. So if you leave the catch bracket blank then you just skip the duplicate data silently. The Exception e is optional. Just if you need to know what kind of exception have you caught. Or, if you want to do something on the data, you can just do it inside the catch bracket. As long as you do not pop up any message to the user, it is silent.. :-)
0
 
KahhoeCommented:
Probably cause by duplicate name when you add a new row, modified you method as below to catch the error and promt the user. Of course you can choose to ignore it silently.

private int addProcess(string process, int locationID)    
{
     DataRow row = data.Tables["Process"].NewRow();
     row["Name"] = process;
     row["LocationID"] = locationID;
     row["GUID"] = System.Guid.NewGuid();

     try
    {
          data.Tables["Process"].Rows.Add(row);
     }
     catch(Exception e)
     {
          MessageBox.Show(e.Message);
     }

     return (int) row["ProcessID"];
}
0
 
ImageryGrlAuthor Commented:
Thanks Kahhoe,

What do I put in the Catch to handle it silently?  in this case, do I need to declare the "e"?
0
 
ImageryGrlAuthor Commented:
works like a charm!
0
All Courses

From novice to tech pro — start learning today.