繁体   English   中英

C#中的数据访问层

[英]Data Access Layer in c#

我想第一次在c#中创建一个数据访问层。 所以我阅读并使用了教程...现在我有一个简单的代码,但是此代码不起作用...

例如:对于我的删除查询...

这是删除网络方法:

[WebMethod]
public void DeleteMethod(string DBName, string tableName, string attributes, string values)
{
    DBName = DAL.dataAccess.DBname;
    tName = DAL.dataAccess.tName;
    DAL.dataAccess.Delete(attributes, values); 
}

此方法将元素传递给dataAccess类,该类创建查询并连接到我的数据库。 用于删除查询的dataAccess类代码:

public static string DBname { get;set; }

public static string tableName { get;set; }

public static void Delete(string field, string condition)
{
    connect = new SqlConnection(string.Format(_conString, DBname));
    adp.SelectCommand = new SqlCommand();
    adp.SelectCommand.Connection = connect;

    adp.SelectCommand.CommandText = "delete  from " + tName + " where " + field + " = " + condition ;
    DataSet ds = new DataSet();
    connect.Open();
    adp.Fill(ds);
    connect.Close();
}

起初我使用cmd.ExecuteNonQuery(); 而不是adp.Fill(ds); ,但这不起作用并出现错误。 所以我将代码更改为此

现在,我在adp.Fill(ds);收到此错误adp.Fill(ds); :“关键字'where'附近的语法不正确。”

我的代码有什么问题?

您应该使用类似于以下的方法-在此正确使用连接和命令:

using (var connection = new SqlConnection((string.Format(_conString, DBname))
{
    using (var command = connection.CreateCommand())
    {
        connection.Open();
        command.CommandText = "delete  from " + tName + " where " + field +  " = " + condition ; 
        command.ExecuteNonQuery();
    }
}

有关为什么需要使用using的更多详细信息,请参见此处:[ https://www.dotnetperls.com/sqlconnection]

在您的删除方法中尝试以下代码:-

您可以对连接字符串进行硬编码,而不是从配置文件中读取。 另外,对我来说,表是Employee,对您来说,它可以是您的表名。

static void Main(string[] args)
    {
        tableName = "Employee";
        string condition = "'User4'";
        Delete("Name", condition);
    }

public static void Delete(string field, string condition)
    {
        string _conString = ConfigurationManager.AppSettings["ConnectionString"];

        using (SqlConnection connect = new SqlConnection(_conString))
        {
            SqlDataAdapter adp = new SqlDataAdapter();

            adp.SelectCommand = new SqlCommand();
            adp.SelectCommand.Connection = connect;

            adp.SelectCommand.CommandText = "delete  from " + tableName + " where " + field + " = " + condition;
            DataSet ds = new DataSet();
            connect.Open();
            adp.Fill(ds);
            connect.Close();
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM