All,
I believe I found a little problem. (But I could be mistaking).
The table definition
CREATE TABLE `tbl_talen` (
`LanguageId` varchar(75) NOT NULL default '',
PRIMARY KEY (`LanguageId `)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
The situation:
... creating the command type (ommited ....)
cmd.CommandType = CommandType.Text
cmd.CommandText = "Select count(*) as TotalFound from {0} where LanguageId = ?searchVal";
cmd.Parameters.Add(dbSwitch.GetParameter("?searchVal", m_oEditedObject.Name));
Executing:
if ((Convert.ToInt32(cmd.ExecuteScalar())) > 0)
{
bRetval = true;
break;
}
This gives me the following error:
"Input string was not in a correct format."
And some of the stack-trace included also:
System.FormatException: Input string was not in a correct format.
at System.Number.ParseDecimal(String s, NumberStyles style, NumberFormatInfo info)
at System.Decimal.Parse(String s, NumberStyles style, IFormatProvider provider)
at System.Convert.ToDecimal(String value, IFormatProvider provider)
at System.String.System.IConvertible.ToDecimal(IFormatProvider provider)
at System.Convert.ToDecimal(Object value)
at MySql.Data.Types.MySqlDecimal.Serialize(PacketWriter writer, Boolean binary, Object
value, Int32 length) in C:\_Net\_MySqlDriver\MySqlClient\Types\MySqlDecimal.cs:line 56
at MySql.Data.MySqlClient.MySqlParameter.Serialize(PacketWriter writer, Boolean binary)
in C:\_Net\_MySqlDriver\MySqlClient\parameter.cs:line 307
at MySql.Data.MySqlClient.MySqlCommand.SerializeParameter(PacketWriter writer, String
parmName) in C:\_Net\_MySqlDriver\MySqlClient\command.cs:line 504
at MySql.Data.MySqlClient.MySqlCommand.PrepareSqlBuffers(String sql) in
C:\_Net\_MySqlDriver\MySqlClient\command.cs:line 557
at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior) in
C:\_Net\_MySqlDriver\MySqlClient\command.cs:line 433
at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader() in
C:\_Net\_MySqlDriver\MySqlClient\command.cs:line 408
at MySql.Data.MySqlClient.MySqlCommand.ExecuteScalar() in
C:\_Net\_MySqlDriver\MySqlClient\command.cs:line 452
at FraClaDoc.Client.CommonUI.Maintenance.Base.maintain_Languages.HasData() in
C:\_Net\Projects\FraClaDoc\Sources\FraClaDoc.Client.CommonUI\FraClaDoc.Client.CommonUI\Maintenance\Base\maintain_Languages.cs:line
267
at
FraClaDoc.PresLayer.Forms.Maintenance.Base.MasterDataBase.m_iMasterData_itemschanging(Object
sender, ItemsChanged itemsChanged) in
C:\_Net\_Components\FraClaDoc\FraClaDoc.PresLayer\Forms\Maintenance\Base\MasterDataBase.cs:line
768
at
FraClaDoc.PresLayer.Forms.Bases.Controls.MasterDataControl.pRaiseChangedEvent(Boolean
Changed) in
C:\_Net\_Components\FraClaDoc\FraClaDoc.PresLayer\Forms\Bases\Controls\MasterDataControl.cs:line
147
at FraClaDoc.Client.CommonUI.Maintenance.Base.maintain_Languages.pSetLanguage() in
C:\_Net\Projects\FraClaDoc\Sources\FraClaDoc.Client.CommonUI\FraClaDoc.Client.CommonUI\Maintenance\Base\maintain_Languages.cs:line
156
The error is raised in this procedure: It is trying to convert my varchar parameter into a
decimal which obviously will throw the error.
internal override void Serialize(PacketWriter writer, bool binary, object value, int
length)
{
Decimal v = Convert.ToDecimal( value );
if (binary)
{
writer.WriteLenString( v.ToString(numberFormat) );
}
else
{
writer.WriteLenString( v.ToString(numberFormat) );
}
}
The same procedure taking an int32 as a parameter (with a database field defined as an
integer) however works fine and gives no errors.
This makes me think that I should give the "type" of the parameter upon construction of
that paramete.
However, is this needed (by design) or implemented by the mysqlconnector?
Thxs
Kris
****************************************************************************
Disclaimer:
This electronic transmission and any files attached to it are strictly
confidential and intended solely for the addressee. If you are not
the intended addressee, you must not disclose, copy or take any
action in reliance of this transmission. If you have received this
transmission in error, please notify the sender by return and delete
the transmission. Although the sender endeavors to maintain a
computer virus free network, the sender does not warrant that this
transmission is virus-free and will not be liable for any damages
resulting from any virus transmitted.
Thank You.
****************************************************************************