[英]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.