[ http://issues.apache.org/jira/browse/IBATISNET-49?page=all ] Roberto Rabe resolved IBATISNET-49: -----------------------------------
Resolution: Fixed Fix Version: DataMapper 1.2 Resolved (assuming this is working as needed...Ron?) > Exceptions such as NotSupportedException not handled gracefully in > CreateParametersForStatementText() > ----------------------------------------------------------------------------------------------------- > > Key: IBATISNET-49 > URL: http://issues.apache.org/jira/browse/IBATISNET-49 > Project: iBatis for .NET > Type: Bug > Versions: DataMapper 1.1 > Environment: [assembly: AssemblyVersion("1.1.458")] > Reporter: Ron Grabowski > Assignee: Roberto Rabe > Fix For: DataMapper 1.2 > > SQLite: > http://www.sqlite.org/ > doesn't have strongly typed data columns like most other databases. The > SQLite.Net provider: > http://sourceforge.net/projects/adodotnetsqlite > throws NotSupportedExceptions when code like this is executed: > ((IDbDataParameter)dataParameter).Precision = property.Precision; > [NotSupportedException: Specified method is not supported.] > Finisar.SQLite.SQLiteParameter.set_Precision(Byte value) > > IBatisNet.DataMapper.Configuration.Statements.PreparedStatementFactory.CreateParametersForStatementText() > A naive way to solve this is to simply wrap the setting of IDbDataParameter > properties in a try/catch block: > try > { > // Set IDbDataParameter > if (property.Size != -1) > { > ((IDbDataParameter)dataParameter).Size = property.Size; > } > ((IDbDataParameter)dataParameter).Precision = property.Precision; > ((IDbDataParameter)dataParameter).Scale = property.Scale; > } > catch > { > } > This thread: > http://tinyurl.com/atwzn > http://www.mail-archive.com/ibatis-user-cs@incubator.apache.org/msg00317.html > talks about similiar issues with an Oracle provider that can be solved by not > setting the certain IDbDataParameter properties. Perhaps it may be worthwhile > to look into adding additional attributes to the <provider> nodes in > providers.config to specify which properties of the IDbDataParameter to set. > For example this is how a <provider> entry may look after incorporating this > idea as well as ideas from IBATISNET-48 and IBATISNET-47: > <provider > name="SQLite3" > enabled="true" > assemblyName="SQLite.NET, Version=0.21.1869.3794, Culture=neutral, > PublicKeyToken=c273bd375e695f9c" > connectionClass="Finisar.SQLite.SQLiteConnection" > commandClass="Finisar.SQLite.SQLiteCommand" > parameterClass="Finisar.SQLite.SQLiteParameter" > parameterDbTypeClass="System.Data.DbType, System.Data" > parameterDbTypeProperty="DbType" > dataAdapterClass="Finisar.SQLite.SQLiteDataAdapter" > commandBuilderClass="Finisar.SQLite.SQLiteCommandBuilder" > usePositionalParameters = "true" > useParameterPrefixInSql = "false" > useParameterPrefixInParameter = "false" > parameterPrefix="" > setDbParameterPrecision="false" > setDbParameterScale="false" > setDbParameterSize="false" > /> -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira