Reputation: 2163
interface IDbInteraction
{
int GetValueAsInt(string sql);
}
class SQLDbInteraction : IDbInteraction
{
private string _connStr;
public SQLDbInteraction (string connStr)
{
_connStr = connStr;
}
public int GetValueAsInt(string sql)
{
int value;
using(SqlConnection conn=new SqlConnection(_connStr))
{
SqlCommand command = new SqlCommand(sql, conn);
conn.Open();
value = Convert.ToInt32(command.ExecuteScalar());
}
return value;
}
}
This is a simple example on how to program an interface
when access to a SQL Server database is needed.
It was offered to me as advice to replace an old code that I've presented in a question.
So ..., as I am fresh developer and new to the interface
concept / approach / methodology, and as I don't really connect to the term Repository
I've renamed that...
Could you please give a little broad example on how would you use these two : class
& interface
above ?
And also if you could please offer alternative to IRepository
(original name)
What would you replace it with (if you don't mind)?
As the point of this post, is about moving from the unsafe and kinda obsolete
technique I was using, and now while trying to move on to "next generation" coding methodology,
I could use your help on this sample code to learn usage.
what i did now was researching the web.. and still, i have this issue in question :
is the way to call/invoke GetValueAsInt("select aColumn ...")
now...when having an interface
added to the "equation" ,
did it change anything as far as the invocation act cares ?
do you still just call GetValueAsInt()
as u did till now?
is it true that in this manner, nothing realy changed.. as for the actual usage
do you now call
IDbInteraction.GetValueAsInt("select aColumn from...")
or
SQLDbInteraction.GetValueAsInt("select aColumn from...")
or calling both ways is now availble ?
Upvotes: 1
Views: 8613
Reputation: 2163
ok as i was expecting an answer... while still searching i came to conclusion
this is what i am going to implement
(say subject of application is colors)
IDbInteraction colorsData = new SQLDbInteraction("server=(local);Initial Catalog=...");
int colorId= colorsData.GetValueAsInt("SELECT colorId FROM colors WHERE name='jade'"));
as i will continue this search for the correct answer .if you see something wrong in my implementation please post your answer , if it is correct could somone please just upvote or something ?
Upvotes: 1
Reputation: 760
Interface based programming is basically used to define a contract that a class must adhere to when being used.. Since you are new to this sort of terminology I would read up on Object Oriented Programming and Design Patterns where you will find out about implementations of the repository pattern.. IRepository is just an interface name you can name an interface whatever you like. Repository is a design pattern which is quite commonly used in business logic to data access layers. I am not sure that I would define this code as unsafe and obselete but you may decide to implment this logic using a design pattern and using object oriented techniques.
Upvotes: 1