TheBigBearNow Ответов: 1

Вопрос о CRUD и просмотре данных, а есть ли и более простой способ?


Здравствуйте, у меня есть вопрос о создании запроса вставки. Есть ли способ, которым я могу это сделать?DBNull с int и datetime? Кроме того, я хотел бы знать, как наиболее эффективно я должен делать CRUD с C# WPF. В настоящее время я использую listview для просмотра моих данных из моей БД я использую SqlCommand и SqlDataReader, чтобы поместить мои данные в список<myobject> и я использую foreach, чтобы добавить список в listview. Мне интересно, должен ли я вместо этого использовать Datatable и, возможно, DataGrid?

Мне интересно, могу ли я использовать такой метод создания?

public static void CreateProduct(Product product)
        {
            using (SqlConnection connection = ConnectionString.GetSqlConnection())
            {
                connection.Open();
                string sqlCreate = "INSERT INTO Products (ProductName, ProductPrice, ProductQuantity, " +
                    "ProductTax, ProductTotal, ProductListedDate, ProductPurchasedDate, UserID, ReceiptID " +
                    "VALUES(@pn, @pp, @pq, @pta, @pto, @pld, @ppd, @uid, @rid)";
                using (SqlCommand cmdCreate = new SqlCommand(sqlCreate, connection))
                {
                    cmdCreate.Parameters.AddWithValue("@pn", product.ProductName);
                    cmdCreate.Parameters.AddWithValue("@pp", product.ProductPrice);
                    cmdCreate.Parameters.AddWithValue("@pq", product.ProductQuantity);
                    cmdCreate.Parameters.AddWithValue("@pta", product.ProductTax);
                    cmdCreate.Parameters.AddWithValue("@pto", product.ProductTotal);
                    cmdCreate.Parameters.AddWithValue("@pld", product.ProductListedDate);
                    cmdCreate.Parameters.AddWithValue("@ppd", product.ProductPurchasedDate);
                    cmdCreate.Parameters.AddWithValue("@uid", product.UserID);       // ?? Convert.DBNull);
                    cmdCreate.Parameters.AddWithValue("@rid", product.ReceiptID);

                    cmdCreate.ExecuteNonQuery();
                }
            }
        }
//But this is the way I have my current create but I was wondering if I didn’t need @@IDENTITY
public static int CreateNewUser(User newUser)
        {
            string SQLinsertQuery = "INSERT INTO Users (Username, Password, IsAdmin, UserCreatedDate) " +
                                    "VALUES(@username, @password, @isadmin, @usercreateddate)";
            //SQL command
            SqlCommand cmdCreate = new SqlCommand(SQLinsertQuery, connection);
            cmdCreate.Parameters.AddWithValue("@username", newUser.Username);
            cmdCreate.Parameters.AddWithValue("@password", newUser.Password);
            cmdCreate.Parameters.AddWithValue("@isadmin", newUser.IsAdmin);
            cmdCreate.Parameters.AddWithValue("@usercreateddate", newUser.UserCreatedDate);
            try
            {
                connection.Open();
                cmdCreate.ExecuteNonQuery();
                string SQLselect = "SELECT @@IDENTITY FROM Users";
                SqlCommand cmdSelect = new SqlCommand(SQLselect, connection);
                int userId = Convert.ToInt32(cmdSelect.ExecuteScalar());
                return userId;
            }
            catch (SqlException sql)
            {
                sql.Message.ToString();
                throw sql;
            }
            catch (Exception ex)
            {
                ex.Message.ToString();
                return -1;
            }
            finally { connection.Close(); }
        }


Что я уже пробовал:

использование listview и других методов создания

1 Ответов

Рейтинг:
1

Gerry Schmitz

Да, начните использовать ORM. Я использую Entity Framework.