Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用接口连接到SQL Server数据库_C#_Sql Server_Interface_Asp.net 4.0 - Fatal编程技术网

C# 使用接口连接到SQL Server数据库

C# 使用接口连接到SQL Server数据库,c#,sql-server,interface,asp.net-4.0,C#,Sql Server,Interface,Asp.net 4.0,这是一个简单的示例,介绍了在需要访问SQL Server数据库时如何编写接口 它是作为替换我在一个问题中提出的旧代码的建议提供给我的 所以…,因为我是新开发人员,对界面概念/方法/方法不熟悉,而且因为我没有真正将连接到存储库这个术语,所以我将其重命名为 请您举一个简单的例子,说明如何使用上面的两个:class&interface 另外,如果您能提供i推荐(原名)的替代方案 如果你不介意的话,你会用什么来取代它 作为这篇文章的重点,是关于从我以前使用的不安全和有点过时的技术转移到“下一代”编码方法

这是一个简单的示例,介绍了在需要访问SQL Server数据库时如何编写
接口

它是作为替换我在一个问题中提出的旧代码的建议提供给我的

所以…,因为我是新开发人员,对
界面
概念/方法/方法不熟悉,而且因为我没有真正连接到
存储库
这个术语,所以我将其重命名为

请您举一个简单的例子,说明如何使用上面的两个:
class
&
interface

另外,如果您能提供
i推荐
(原名)的替代方案

如果你不介意的话,你会用什么来取代它

作为这篇文章的重点,是关于从我以前使用的不安全和有点过时的
技术转移到“下一代”编码方法

我可以利用您对这个示例代码的帮助来了解用法

更新 我现在做的是研究网络。。尽管如此,我仍然有这个问题:

是调用/调用
GetValueAsInt(“选择列…”)的方法。

现在…在“等式”中添加
接口时

就调用法案而言,它改变了什么吗?

你现在还是像以前那样调用
GetValueAsInt()

以这种方式,一切都没有改变,这是真的吗。。至于实际使用情况,

你现在打电话吗

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;
    }
}


或者现在可以双向调用了?

基于接口的编程基本上用于定义一个类在使用时必须遵守的契约。。由于您不熟悉这类术语,我将阅读面向对象编程和设计模式,您将了解存储库模式的实现。。IRepository只是一个接口名,您可以随意命名接口。存储库是一种设计模式,在数据访问层的业务逻辑中非常常用。我不确定我是否会将此代码定义为不安全和不可删除的代码,但您可以决定使用设计模式和面向对象技术来实现此逻辑。

好的,因为我希望得到答案。。。在继续寻找的过程中,我得出了结论

这就是我要实现的

(假设应用的主题是颜色)


我将继续搜索正确答案。如果您发现我的实现中存在错误,请发布您的答案,如果答案正确,请找人进行投票或其他方式?

我不是说上面的代码过时了,相反,我使用的代码是过时的,然后,somone让我使用上面的代码作为我代码的替代,因为我的代码很容易出错injections@T.U.B ... 我已经更新了我的问题,你能试着回答吗?如果你从你的查询中得到了正确的数据,那么我真的看不出你所做的有什么错。将看似非常简单的查询过度复杂化是没有意义的。我可能想把DB字符串放在一个配置文件中,这样它就可以很容易地被更改,查询也可以放在常量字符串中,但除此之外,它看起来还可以。@Unculledbader欢呼着,伙计,我现在已经有两个类(我有很多类作为助手)转移到了使用接口上,我想我会在以后使用它时看到这一点(至于它们存在的确切原因……除了微软让你以另一种方式感受到你不能离开“学校”和新产品的关系)你将看到开始单元测试功能的要点。使用接口将让你更容易地对任何代码进行单元测试。
IDbInteraction.GetValueAsInt("select aColumn from...")
SQLDbInteraction.GetValueAsInt("select aColumn from...")
IDbInteraction colorsData = new SQLDbInteraction("server=(local);Initial Catalog=...");
int colorId= colorsData.GetValueAsInt("SELECT colorId FROM colors WHERE name='jade'"));