gpt4 book ai didi

c# - 处理数据库时的最佳实践

转载 作者:搜寻专家 更新时间:2023-10-30 23:39:33 30 4
gpt4 key购买 nike

我现在是一名学生,学习C语言和数据库。不幸的是,我要去的学校并没有使用C语言与数据库交互。所以我是自己学的。
我写了一些使用数据库和c的小程序。他们运作良好,做我想做的事,即使他们的结构可能不正确。我正在写一个新的程序,这将是我最大的,我希望它是正确的。该程序有许多windows窗体、类和一个包含18个表的sql数据库。我现在构建它的方式是我的windows窗体通常会创建一个类的新实例。比如说顾客。当点击save按钮时,将创建一个新的客户,为属性分配值,并且该对象与一个组合框一起发送到customer类中的一个公共方法,或者我正在使用的任何东西。我还有一个名为database的类,其中包含我编写的所有sql查询。这样一切都是一个地方。我通常会将一个字典作为参数发送给数据库类来填充,然后在customer类中使用它来填充组合框。我没有使用数据集、数据表或类似的东西。我直接处理数据库。
这被认为是可以接受的,还是在现实世界中不可以?我真的希望在不久的将来某个时候能以此为生,所以我想正确地学习。我自己读了很多书,我也看到人们阅读的方式有很多变化。如果有人也有什么好的阅读建议,我将不胜感激。
编辑,根据建议添加代码片段
在我添加新客户的表格上,我有一个位置让他们填写地址。我有两个组合框,一个是州的,一个是市的。我对城市进行了筛选,以便它只显示处于“状态”组合框中所选状态的城市。因此,在我的form类中,我有一个方法用于更改状态框索引。看起来像这样。

    private void cboStates_SelectedIndexChanged(object sender, EventArgs e)
{
Address.GetFilteredCities(cboCity, (int)cboStates.SelectedValue);
}

CBocity是城市组合框。在address类中,我有一个如下所示的方法。cities是一个字典,它包含一个int作为键,一个字符串作为值。int是城市的id,保存在我的数据库中。值是显示在组合框中的城市名称。
    public static void GetFilteredCities(ComboBox box, int stateID)
{
cities.Clear();
Database.GetFilteredCities(cities, stateID);

if (cities.Count > 0)
{
box.DataSource = new BindingSource(cities, null);
box.ValueMember = "Key";
box.DisplayMember = "Value";
}

else
{
box.DataSource = new BindingSource(null, null);
}
}

然后在数据库类中,
    public static void GetFilteredCities(Dictionary<int, string> cities, int stateID)
{
try
{
using (SqlConnection conn = new SqlConnection(connString))
{
conn.Open();
SqlCommand grab = new SqlCommand("SELECT CityID, CityName FROM tblCities WHERE StateID = " + stateID, conn);
using (SqlDataReader read = grab.ExecuteReader())
{
while (read.Read())
{
cities.Add((int)read["CityID"], read["CityName"].ToString());
}
}
}
}

catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error getting cities", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}

有没有一种更正确的方法,或者这被认为是一种可以接受的方法?我往往会陷入困境,所以如果有更好的方法,我宁愿现在就学习。例如,出于任何原因,使用dataadapter和datatable是否更好?在使用程序时修改DATATATE,然后不提交到数据库,直到您出于任何原因更好地退出程序为止。

最佳答案

几乎没有现代应用程序包含任何sql,它们经常使用能够为您生成sql的工具。寻找一些使用“实体框架”或“nhibernate”作为例子的例子。也许甚至可以玩一个对象数据库,比如ravendb…在那里你的类可以有效地直接保存到数据库中。

关于c# - 处理数据库时的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36759923/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com