C# WPF read SQL method
Я создаю метод read/get по Id это мой первый раз, когда я создаю метод с помощью операторов "using", поэтому мне интересно, каким должен быть мой метод. где я должен вернуть продукт, и не пропущу ли я что-нибудь или какие-либо советы/идеи, любой вклад будет оценен по достоинству.
public static Product ReadProductById(int prodId) { using(SqlConnection connection = ConnectionString.GetSqlConnection()) { string query = "SELET * " + "FROM Products " + "WHERE ProductId = @pid"; using(SqlCommand cmdRead = new SqlCommand(query, connection)) { cmdRead.Parameters.AddWithValue("@pid", prodId); using(SqlDataReader reader = cmdRead.ExecuteReader()) { if (reader != null) { while (reader.Read()) { Product product = new Product() { ProductId = Convert.ToInt32(reader["ProductId"]), ProductName = reader["ProductName"].ToString(), ProductPrice = Convert.ToDecimal(reader["ProductPrice"]), ProductListedDate = Convert.ToDateTime(reader["ProductListedDate"]), ProductTax = Convert.ToDecimal(reader["ProductTax"]), UserId = Convert.ToInt32(reader["UserId"]), ProductQuantity = Convert.ToInt32(reader["ProductQuantity"]), ProductTotal = Convert.ToDecimal(reader["ProductTotal"]), ProductPurchasedDate = Convert.ToDateTime(reader["ProductPurchasedDate"]), ReceiptId = Convert.ToInt32(reader["ReceiptId"]) }; return product; } } else { return null; } //return product; } } } }
Что я уже пробовал:
перемещая возврат в разные места, должен ли я иметь продукт, объявленный в верхней части метода? потому что там, куда он сейчас движется, он говорит, что это не в контексте.
TheBigBearNow
публичный статический продукт ReadProductById(int prodId)
{
Продукт продукт = новый продукт();
использование(SqlConnection connection = ConnectionString.GetSqlConnection())
{
строка запроса = "выбрать *" +
"Продукты" +
"Где ProductId = @pid";
используя(sqlcommand, который cmdRead = новый sqlcommand, который(запрос соединения))
{
cmdRead.Параметры.AddWithValue("@pid", prodId);
использование(SqlDataReader reader = cmdRead.Метода executereader())
{
if (reader != null)
{
в то время как (читатель.читать())
{
Продукт product2 = новый продукт()
{
ProductId = Конвертировать.ToInt32(reader["ProductId"]),
ProductName = reader["ProductName"].Метод toString(),
Параметр = Конвертировать.ToDecimal(reader["ProductPrice"]),
ProductListedDate = Конвертировать.ToDateTime(reader["ProductListedDate"]),
ProductTax = Конвертировать.ToDecimal(reader["ProductTax"]),
UserId = Конвертировать.ToInt32(reader["UserId"]),
ProductQuantity = Конвертировать.ToInt32(reader["ProductQuantity"]),
ProductTotal = Конвертировать.ToDecimal(reader["ProductTotal"]),
ProductPurchasedDate = Конвертировать.ToDateTime(reader["ProductPurchasedDate"]),
ReceiptId = Конвертировать.ToInt32(reader["ReceiptId"])
};
продукт = product2;
}
}
else { product = null; }
}
}
}
возвращенное изделие;
}
это то, что я собираюсь попробовать.
PRAKASH9
Да, вы должны сделать декларацию глобально.
CHill60
Нет, не глобально. См. мое решение для получения справки о Области применения