gpt4 book ai didi

database - 从数据库读取/写入时设计代码流的最佳方法

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

所以我正在尝试我的概念工具,我需要能够真正轻松地从数据库读取和写入数据。我已经根据自己的喜好设置了表单,并散布在不同的文本框和下拉框中以从数据库中读取数据。而且我已经完成了所有工作,但是有一个小错误我不完全理解为什么会在那里。一些文本框不更新数据库中的文本。但它似乎只有在数据库中的数据为空时才会发生。所以最后一行的值仍然卡在文本框中,因此,单击“更新”实际上会将最后一行字段中的值更新到新行中。搞砸一切。

现在,我最感兴趣的是代码的剪切流。布置代码以执行所有这些操作的最佳方式是什么?到目前为止,我得到了这个:

这是单击数据 GridView 中的单元格时的代码:

Private Sub DataGridView_CellClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView.CellClick

On Error Resume Next

selectedName = Me.DataGridView.CurrentRow.Cells(0).Value
selectedGenre = Me.DataGridView.CurrentRow.Cells(1).Value
selectedRhytm = Me.DataGridView.CurrentRow.Cells(2).Value
selectedLength = Me.DataGridView.CurrentRow.Cells(3).Value
selectedFinished = Me.DataGridView.CurrentRow.Cells(4).Value
selectedSoundFile = Me.DataGridView.CurrentRow.Cells(5).Value

txtBoxName.Text = selectedName
txtBoxGenre.Text = selectedGenre
txtBoxRhytm.Text = selectedRhytm
txtBoxLength.Text = selectedLength
txtBoxFinished.Text = selectedFinished
txtBoxSoundFile.Text = selectedSoundFile

End Sub

“选定”变量都在 GlobalCode.vb 中声明,我已经在其中创建了所有这些变量供以后使用。它们是这样定义的:

Friend Module GlobalVariables

Friend selectedName As String = Nothing
Friend selectedGenre As String = Nothing
Friend selectedRhytm As String = Nothing
Friend selectedLength As String = Nothing
Friend selectedFinished As String = Nothing
Friend selectedSoundFile As String = Nothing


End Module

我以前没有真正做过这样的事情。我更像是一名设计师而不是程序员,但我真的需要尝试一个概念,所以我不确定这是不是这样做的方式。我发现它在大多数时候都有效。但我认为熟练的程序员有办法设计代码的布局,使其高效、简洁且易于阅读。那么这看起来如何?

最佳答案

(顺便说一句,我在问题中看不到任何与数据库相关的内容)

也许布局此代码的最佳方式是……不要。不要为标准数据绑定(bind)框架可以处理的事情编写代码。例如(抱歉,它是 C#,但它应该翻译——这里所有的“好”部分都是由 .NET 框架提供的,而不是语言);一些 UI 代码——注意没有复制值的代码:

static class Program {
[STAThread]
static void Main() {
Application.EnableVisualStyles();
// some sample data
BindingList<Track> tracks = new BindingList<Track>();
tracks.Add(new Track { Name = "foo", Genre = "Rock", Rhythm = "insane", Length = 180 });
tracks.Add(new Track { Name = "bar", Genre = "Classic", Rhythm = "sedate", Length = 240 });

// show the data on a form
using (Form form = new Form {
Controls = {
new DataGridView { DataSource = tracks, Dock = DockStyle.Fill },
new TextBox { DataBindings = {{"Text", tracks, "Name"}}, Dock = DockStyle.Bottom},
new TextBox { DataBindings = {{"Text", tracks, "Genre"}}, Dock = DockStyle.Bottom},
new TextBox { DataBindings = {{"Text", tracks, "Rhythm"}}, Dock = DockStyle.Bottom},
new TextBox { DataBindings = {{"Text", tracks, "Length"}}, Dock = DockStyle.Bottom},
}
}) {
Application.Run(form);
}
}
}

与支持数据实体:

class Track : INotifyPropertyChanged {
private string name, genre, rhythm;
private int length;
public event PropertyChangedEventHandler PropertyChanged;
private void SetField<T>(ref T field, T value, string propertyName) {
if (!EqualityComparer<T>.Default.Equals(field, value)) {
field = value;
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
}
}
public string Name { get { return name; } set { SetField(ref name, value, "Name"); } }
public string Genre { get { return genre; } set { SetField(ref genre, value, "Genre"); } }
public string Rhythm { get { return rhythm; } set { SetField(ref rhythm, value, "Rhythm"); } }
public int Length { get { return length; } set { SetField(ref length, value, "Length"); } }
}

关于database - 从数据库读取/写入时设计代码流的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1248352/

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