所以我试图从我的数据库中获取“客户”,但我得到了一个例外
An exception of type ‘System.Data.SqlClient.SqlException’ occurred in System.Data.dll but was not handled in user code
附加信息:必须声明标量变量“@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的SqlParametercommand.CommandText = "SELECT * FROM CUSTOMER WHERE Id = @Id;"; command.Parameters.Add("@Id", SqlDbType.Int32).Value = Id;查看更多关于c# – 必须声明标量变量@Id?的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did69328