|
Hi All,
I'm just working on some Data Access bits and I've run into a bit of an issue I'm not sure how best to deal with.
I have a method that retrieves data from SQL but this might be SQL/SQLExpress/SQLCe how would you best deal with this? I could have another property (enum) go into the class/method that specifies whether the object build a SqlConnection or SqlCeConnection but I was wondering if there was a more elegant solution.
Thanks,
|
|
|
|
|
Program against the interface. One declares an IConnection , and you can then dump an SqlConnection or an SqlCeConnection in it
Like this;
IConnection con = new SqlConnection();
I are troll
|
|
|
|
|
|
Under System.Data.IDbConnection
I are troll
|
|
|
|
|
|
I'm sure there's a better way - but this is the way I do it (rough template!)
DataBase db = new DataBase();
db.DataBaseToUse = DataBases.SQLExpress;
DataSet result = db.GetData();
public enum DataBases
{
SQL = 0,
SQLExpress = 1,
}
internal interface IDataBase
{
DataSet GetData();
}
public class DataBase : IDataBase
{
IDataBase databaseInUse = new SQLDataBase();
public DataBases DataBaseToUse
{
set
{
switch (value)
{
case DataBases.SQLExpress:
databaseInUse = new SQLExpressDataBase();
break;
default:
databaseInUse = new SQLDataBase();
break;
}
}
}
public DataSet GetData()
{
return databaseInUse.GetData();
}
}
internal class SQLDataBase : IDataBase
{
public DataSet GetData()
{
return new DataSet();
}
}
internal class SQLExpressDataBase : IDataBase
{
public DataSet GetData()
{
return new DataSet();
}
}
DaveBTW, in software, hope and pray is not a viable strategy. (Luc Pattyn)Visual Basic is not used by normal people so we're not covering it here. (Uncyclopedia)
|
|
|
|
|
|
Hi Kevin,
Just looking at your code example. Would I be right in thinking that the using ConnectionStringSettings object in your code is actually in System.Configuration ?
Cheers,
|
|
|
|
|
Yeah, there should be a "using System.Configuration" there.
Kevin
|
|
|
|
|
Hi Kevin,
Thanks for this code! I've just gotten this working nicely. I was having a few problems at first as I thought that passing in a connection string that included the Provier... info would be enough. I thought it would obtain the provider automatically, so that has required a bit of modification.
I read this and started to become a bit concerned it would be problematic but a quick check of my Machine.config file confirmed that sqlce is already in there and supported.
http://www.devnewsgroups.net/group/microsoft.public.dotnet.framework.adonet/topic33874.aspx[^]
Thanks again,
|
|
|
|
|
Glad to be of help. I can't remember where I saw the original example now. It might have been in the Visual Systems Journal.
Kevin
|
|
|
|
|
It's certainly a very neat and tidy way of providing support for multiple databases. The code is part of a WPF custom control library that I producing at the moment so it's seriously nice to have this generic method to support DB data.
Thanks again,
|
|
|
|
|
Why not use the Provider patterns? Each connection can be created based on the provider in the connection string - then you can use the standard Db... classes rather than DB specific classes.
|
|
|
|
|
Hi Pete,
I'm going to have a look into this.
Cheers,
|
|
|
|
|
That's basically what my code snippet above is doing.
Kevin
|
|
|
|
|
Hello everyone,
I failed to find a sample about how to convert an array instances of user defined types into a (C# ADO.Net) datatable -- I want to use the datatable to bind to ASP.Net data bound controls (e.g. gridview). Could anyone provide a sample or recommend me to some simple samples?
Another question is, whether it is a must to convert to datatable in order to bound to controls in ASP.Net? Could I bound to any array of user defined types?
thanks in advance,
George
|
|
|
|
|
George_George wrote: I failed to find a sample about how to convert an array instances of user defined types into a (C# ADO.Net) datatable
Loop through the array and add items to datatable.
George_George wrote: whether it is a must to convert to datatable in order to bound to controls in ASP.Net?
Nope. Datasource can be any type which is enumerable. And yes, arrays are enumerable.
|
|
|
|
|
given input: DNo:12,Crystal Building,ghn O M R Road;5 e c r road; c/o r v rao
reversing the string: oar v r o/c ;daor r c e 5;daoR R M O nhg,gnidliuB latsyrC,21:oND
the reverse input string is passed to REGEX pattern
string str1 = Regex.Replace(g, @"(?<=^|,|;|#|&|.)([^0-9]) (?=[^0-9](?:=| |;|#|&|,|#|$))", "$1");
obtained output after reversing: DNo:12,Crystal Building,ghn OMRRoad;5 ecrroad; c/o rvrao
required output is: DNo:12,Crystal Building,ghn OMR Road;5 ecr road; c/o rv rao
anybody can fix this simple error..
thank you
the quieter u become more u hear
|
|
|
|
|
That's what I was asking for. A real example of what you were actually trying to do instead of a lot of made up examples that didn't resemble any real data.
(?<= )(\w) (?=\w )
Despite everything, the person most likely to be fooling you next is yourself.
|
|
|
|
|
that didnt work out...
what i need is
1. it should merge only single characters
2. but should not merge numeric values. only alphabets should be merged
3. also should stop if delimers are found (!@#$&')
can you help me
the quieter u become more u hear
|
|
|
|
|
Ok, do you have any example where it doesn't work? This is the output you required:
DNo:12,Crystal Building,ghn OMR Road;5 ecr road; c/o rv rao
And this is the output that I got (copied straight from the console):
DNo:12,Crystal Building,ghn OMR Road;5 ecr road; c/o rv rao
That looks pretty identical to me...
Despite everything, the person most likely to be fooling you next is yourself.
|
|
|
|
|
this example doesnt work out
DNo:12,Crystal Building,ghn O M R Road;5 e c r road; c/o r v rao
if found the solution kindly send me the pattern which you are using
the quieter u become more u hear
|
|
|
|
|
That's exactly the input that I was using. It's working just fine, and I already posted the pattern that I was using.
Despite everything, the person most likely to be fooling you next is yourself.
|
|
|
|
|
"DNo:12,Crystal Building,ghn O M R Road; 5 e c r road; c/o r g rao";
that bold part alone has errors it shows 5ecr...
i told you numeric values should not be included even if it is single... could u fix it out
thanks for your help
the quieter u become more u hear
|
|
|
|
|
lawrenceinba wrote: that bold part alone has errors it shows 5ecr...
No, it doesn't. Look at the output that I posted.
Despite everything, the person most likely to be fooling you next is yourself.
|
|
|
|