c# – 必须声明标量变量@Id?
发布时间:2020-12-15 23:48:39 所属栏目:百科 来源:网络整理
导读:所以我试图从我的数据库中获
所以我试图从我的数据库中获取“客户”,但我得到了一个例外
附加信息:必须声明标量变量“@Id”. using Core; using System; using System.Collections.Generic; using System.Configuration; using System.Data.SqlClient; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DatabaseAccess { public class DbCustomer { private string ConnectionString = ConfigurationManager.ConnectionStrings["local"].ConnectionString; private SqlConnection connection { get; set; } public DbCustomer() { connection = new SqlConnection(ConnectionString); } public Customer GetCustomer(int Id) { Customer customer = null; connection.Open(); using (SqlCommand command = connection.CreateCommand()) { command.CommandText = "SELECT * FROM CUSTOMER WHERE Id = @Id;"; var reader = command.ExecuteReader(); while (reader.Read()) { customer = new Customer(); customer.Id = reader.GetInt32(reader.GetOrdinal("Id")); customer.FirstName = reader.GetString(reader.GetOrdinal("FirstName")); customer.LastName = reader.GetString(reader.GetOrdinal("LastName")); customer.Address = reader.GetString(reader.GetOrdinal("Address")); } command.ExecuteNonQuery(); connection.Close(); } return customer; } } } using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.Text; using System.Threading.Tasks; namespace Core { [DataContract] public class Customer { [DataMember] public int Id { get; set; } [DataMember] public string FirstName { get; set; } [DataMember] public string LastName { get; set; } [DataMember] public string Address { get; set; } [DataMember] public string Country { get; set; } [DataMember] public string PhoneNumber { get; set; } } } using Core; using DatabaseAccess; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace BusinessLogic { public class CustomerController { public DbCustomer DbCustomer { get; set; } public CustomerController() { DbCustomer = new DbCustomer(); } public Customer GetCustomer(int Id) { return DbCustomer.GetCustomer(Id); } } } using BusinessLogic; using Core; using DatabaseAccess; using System.Collections.Generic; namespace WCF { // NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "Service1" in both code and config file together. public class CustomerService : ICustomerService { CustomerController CustomerController = new CustomerController(); public Customer GetCustomer(int Id) { return CustomerController.GetCustomer(Id); } public List<Customer> GetCustomers() { return new List<Customer>(); } } } using Core; using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.ServiceModel; using System.Text; namespace WCF { // NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IService1" in both code and config file together. [ServiceContract] public interface ICustomerService { [OperationContract] Customer GetCustomer(int Id); [OperationContract] List<Customer> GetCustomers(); } } 解决方法
您应该添加名为@Id的SqlParameter
command.CommandText = "SELECT * FROM CUSTOMER WHERE Id = @Id;"; command.Parameters.Add("@Id",SqlDbType.Int32).Value = Id; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |