How can I use my own connection Provider when using iBatis Data Mapper?

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

How can I use my own connection Provider when using iBatis Data Mapper?

aranja0
How can I use my own connection Provider when using iBatis Data Mapper? I have to use UserId and Password of the user performing the db operation in the ConnectionString? E.g. The following ConnectionString has to be modified to insert the userid and password for user performing the db operation.

Data Source=TEST;Persist Security Info=True;User ID={userID};Password={password}

How can this be handled in iBatis DataMapper?
Reply | Threaded
Open this post in threaded view
|

Re: How can I use my own connection Provider when using iBatis Data Mapper?

Juan Pablo Araya
Implement your own mapper class.

In the InitMapper() method you can configure your DataSource on the
fly as in the example:


--- Mapper.cs -----

using System.Xml;
using IBatisNet.Common.Utilities;
using IBatisNet.DataMapper;
using IBatisNet.DataMapper.Configuration;
using System.Diagnostics;
using System.Configuration;

namespace wfConsultaCommon
{
    public class Mapper
    {
        private static volatile SqlMapper _Mapper = null;

        protected static void Configure(object obj)
        {
            _Mapper = null;
        }

        protected static void InitMapper()
        {
            DomSqlMapBuilder builder = new DomSqlMapBuilder();
            XmlDocument sqlMapConfig =
Resources.GetConfigAsXmlDocument("SqlMap.config");
            ((sqlMapConfig["sqlMapConfig"]["database"]["dataSource"]).Attributes[1]).Value
= "Data Source=(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = " +
ConfigurationManager.AppSettings["DataHost"] + ")(PORT = " +
ConfigurationManager.AppSettings["DataPort"] + "))(CONNECT_DATA =
(SERVER = DEDICATED)(SID = " +
ConfigurationManager.AppSettings["DataOSID"] + ")));User ID=" +
ConfigurationManager.AppSettings["DataUser"] + ";Password=" +
ConfigurationManager.AppSettings["DataPass"];
            _Mapper = builder.Configure(sqlMapConfig) as SqlMapper;
        }

        public static SqlMapper Instance()
        {
            if (_Mapper == null)
            {
                lock (typeof(SqlMapper))
                {
                    if (_Mapper == null)
                    {
                        InitMapper();
                    }
                }
            }
            return _Mapper;
        }

        public static SqlMapper Get()
        {
            return Instance();
        }


        public static void Clear()
        {
            lock (typeof(SqlMapper))
            {
                _Mapper = null;
            }
        }
    }
}

--- End of Mapper.cs -----

In this case, we mantain the DataHost, DataPort, DataOSID, DataUser
and DataPass in web.config because a thread is changing these values
each half hour.

If you need to pass your own user and pass... then maybe you can use
iBatis with:

Instance(myuser, mypass).Queryfor{...}

--> The Instance() method then pass the user and pass to the
InitMapper(user, pass) method.

Greetings!



2010/3/20 aranja0 <[hidden email]>:

>
> How can I use my own connection Provider when using iBatis Data Mapper? I
> have to use UserId and Password of the user performing the db operation in
> the ConnectionString? E.g. The following ConnectionString has to be modified
> to insert the userid and password for user performing the db operation.
>
> Data Source=TEST;Persist Security Info=True;User
> ID={userID};Password={password}
>
> How can this be handled in iBatis DataMapper?
> --
> View this message in context: http://old.nabble.com/How-can-I-use-my-own-connection-Provider-when-using-iBatis-Data-Mapper--tp27967371p27967371.html
> Sent from the iBATIS - User - Cs mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [hidden email]
> For additional commands, e-mail: [hidden email]
>
>



--
Juan Pablo Araya
787 76 034

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]