|
When a question relates to a 3rd party product, you will generally be better off posting your question in the forums for that product. You will probably get an answer much quicker than hoping that somebody here uses that product as well.
|
|
|
|
|
I always suspect that when people do this sort of thing it is because they have not actually paid for the product and they don't want to risk exposing themselves on the vendor's website. It would seem absurd to have paid for a product like this without checking out the support options in advance.
|
|
|
|
|
Good point (and one I hadn't considered). I just put it down to laziness.
|
|
|
|
|
In my current application I am getting an error "Cannot insert duplicate key row in object <tablename> with unique index <indexname>.\r\n51062\r\nThe statement has been terminated." while trying to run the command sqlCommand.ExecuteNonQuery();
Please advice me if anyone has any idea on this.
Thanks & Regards
Mishra
|
|
|
|
|
<blockquote class="FQ"><div class="FQA">Ballita wrote:</div>"Cannot insert duplicate key row in object with unique index .\r\n51062\r\nThe statement has been terminated."</blockquote>
was the key field inserted with the same value?
I think the best way for you is to copy the sql statement here, because the error occured in sqlCommand.ExecuteNonQuery();
If we dream, every thing is possible!
|
|
|
|
|
Please do not post the same question to different forums.
Ballita wrote: error "Cannot insert duplicate key row in object with unique index
if you bother to read what its says it blatently obvious you Cannot insert duplicate key row in object with unique index
Bob
Ashfield Consultants Ltd
|
|
|
|
|
Hello everyone,
Any guidelines about when to use Hashtable and when to use Dictionary? I always use Dictionary.
thanks in advance,
George
|
|
|
|
|
Use Hashtable in V1, otherwise use Dictionary.
|
|
|
|
|
V1 means C# 1.0 or?
regards,
George
|
|
|
|
|
V1 should mean Version1.0 or Version1.1
V2 use dictionary,me too
|
|
|
|
|
Cool, Chao.Fu!
Question answered.
regards,
George
|
|
|
|
|
|
Thanks PIEBALDconsult,
Question answered.
regards,
George
|
|
|
|
|
Well MSDN states that Dictionary(Of TKey, of tValue) is a new class in v2.0. but further explains that the Objects used as Key are required to have an implementation of Equality Comparer, IEqualityComparer whereas in HashTable the objects used as Keys are required to override the IHashCode Provider interface or Object.GetHashCode method.
Internally HashTable uses the Dictionary object as its Key/Value pair but hashtable is faster in retrieval.
Rest of the details are well explained in MSDN.
Muhammad Talha
|
|
|
|
|
telha wrote: but hashtable is faster in retrieval
Do you have any source to back that up?
The HashTable has a lot of additional code for handling thread safety, which of course slows down the process a bit, but other than that they seem to work pretty much the same.
Besides, once you have retrieved the value from the HashTable, you have to cast it, which you don't need to do with a Dictionary.
Despite everything, the person most likely to be fooling you next is yourself.
|
|
|
|
|
Thanks Guffa,
Guffa wrote: The HashTable has a lot of additional code for handling thread safety
Do you mean Hashtable is a class of thread safety?
regards,
George
|
|
|
|
|
Yes, HasTable is a synchronised collection, while Dictionary isn't.
Despite everything, the person most likely to be fooling you next is yourself.
|
|
|
|
|
|
Thanks Muhammad,
Happy to learn new things from you. Two more comments,
1.
telha wrote: Well MSDN states that Dictionary(Of TKey, of tValue) is a new class in v2.0. but further explains that the Objects used as Key are required to have an implementation of Equality Comparer, IEqualityComparer whereas in HashTable the objects used as Keys are required to override the IHashCode Provider interface or Object.GetHashCode method.
I did some search from MSDN, I think Dictionary is using either IEqualityComparer.Equals or System.IEquatable, while Hashtable is using Object.GetHashCode to check whether two keys' are the same?
2.
From, http://msdn.microsoft.com/en-us/library/xfhwa508(VS.80).aspx[^]
What means "Every key in a Dictionary must be unique according to the dictionary's equality comparer" -- I understand key in a Dictionary should have an equality comparer, but I do not know what means an equality comparer for a Dictionary itself?
regards,
George
|
|
|
|
|
George_George wrote: I did some search from MSDN, I think Dictionary is using either IEqualityComparer.Equals or System.IEquatable, while Hashtable is using Object.GetHashCode to check whether two keys' are the same?
Both the HashTable and the Dictionary uses both the GetHashCode method and some kind of comparer. The hash code is used to determine a bucket for the item, and the comparer is used when looping through the items in the bucket to find the correct item.
HashTable uses the Equals method if no customer key comparer is specified. Dictionary uses the default EqualityComparer for the key if no custom key comparer is specified.
George_George wrote: What means "Every key in a Dictionary must be unique according to the dictionary's equality comparer" -- I understand key in a Dictionary should have an equality comparer, but I do not know what means an equality comparer for a Dictionary itself?
That's the same thing. The equality comparer for the dictionary is only used to compare keys.
Despite everything, the person most likely to be fooling you next is yourself.
|
|
|
|
|
Great Guffa!
1.
Guffa wrote: The hash code is used to determine a bucket for the item, and the comparer is used when looping through the items in the bucket to find the correct item.
If more then one elements falls into the same bucket (I think it means hashing conflicting), from your reply, it seems the elements of the same bucket is sorted using Comparer?
2.
Guffa wrote: That's the same thing. The equality comparer for the dictionary is only used to compare keys.
From the Key type, we can implement the type from equality class, but how to assign the equality cmoparer for the Dictionary itself?
regards,
George
|
|
|
|
|
George_George wrote: If more then one elements falls into the same bucket (I think it means hashing conflicting), from your reply, it seems the elements of the same bucket is sorted using Comparer?
The elements are not sorted, they are just placed in buckets and the order in a bucket is not defined.
The comparer is always used when retrieving items. First the bucket is determined from the hash code, then the comparer is used to compare the desired key with the keys of the stored items (even if there is only one in the bucket).
George_George wrote: From the Key type, we can implement the type from equality class, but how to assign the equality cmoparer for the Dictionary itself?
You can specify a comparer in the constructor to the dictionary. I actually wrote an article about that:
Dictionary with a Custom Key[^]
Despite everything, the person most likely to be fooling you next is yourself.
|
|
|
|
|
Hi Guffa,
I take some time to study your article. It is not big, but clear enough, cool! I like it!
A few comments,
1.
Why you use inner class to implement the comparer interface? Why not just let the parking special key class implements the comparer interface directly? Any benefits?
2.
I want to confirm with you that,
when we use Hashtable, Object.Equals and Object.GetHashCode is used. But when we use Dictionary, IEqualityComparer.Equals and IEqualityComparer.GetHashCode is used?
3.
Equality comparer of the Dictionary is what is used as the 1st parameter of the Dictonary constructor, like your inner class ParkingSpaceKey.EqualityComparer?
regards,
George
|
|
|
|
|
|
Thanks Alan,
I think it is more correct to say Hashtable is a special type of Dictionary, whose key type is Object, correct?
regards,
George
|
|
|
|