0
編程時,我正在編寫一個項目,該項目允許用戶使用文本框將其註冊數據輸入到本地數據庫中。該代碼的作品,它將項目添加到數據庫 和我按下「Show_users」按鈕後,它顯示在listBox_users列表框中。如何使用C#中的本地數據庫中的數據顯示文本框中的列表框項目
我的問題是,當我從listBox_users選擇一個名字,應該用我的listBox_users創建的事件dislay大約在上textBox'es選定的用戶,我用擺在首位進入 數據的數據, 但即時通訊出現「無法從已關閉的數據庫讀取數據」的錯誤。
namespace Userform
{
public partial class Form1: Form
{
SqlCeDataReader rdr;
public Form1()
{
InitializeComponent();
}
// Some code between...
private void button_ShowUsers_Click(object sender, EventArgs e) //code that shows users in listBox
{
var dt = new DataTable();
string connectionString2 = @"Data Source=MyDatabase;Password=xxxxxx;";
using (var cn = new SqlCeConnection(connectionString2))
using (var cmd = new SqlCeCommand("Select * From Users", cn))
{
cn.Open();
using (var reader = cmd.ExecuteReader())
{
dt.Load(reader);
var results = (from row in dt.AsEnumerable()
select new
{
//UserID = row.Field<int>("ID"),
FirstName = row.Field<string>("Firsname"),
LastName = row.Field<string>("Lastname"),
FullName = row.Field<string>("Firstname") + " " + row.Field<string>("Lastname")
}).ToList();
listBox_users.DataSource = results;
listBox_users.DisplayMember = "FullName";
rdr = cmd.ExecuteReader();
}
}
}
//I made an event for the listBox_users:
private void listBox_users_SelectedIndexChanged(object sender, EventArgs e)
//event code that should show listbox selected data in the textBoxes
{
if (listBox_inimesed.SelectedItem != null && rdr != null)
{
try
{
if (rdr.Read())
{
textBox1_firstname.Text = rdr.GetString(1);
textBox2_lastname.Text = rdr.GetString(2);
textBox3_email.Text = rdr.GetString(3);
textBox4_address.Text = rdr.GetString(4);
dateTimePicker1.Value = rdr.GetDateTime(5);
richTextBox_info.Text = rdr.GetString(6);
}
else MessageBox.Show("Object not found");
}
finally
{
rdr.Close();
}
}
}
}
對不起,很長的響應,但給出錯誤「對象引用未設置爲對象的實例」。 –
那是因爲我在'SelectedIndexChanged'事件中引用了錯誤的對象,是referenece'rdr'而不是'reader'。現在修復。 – rclement
是的,它可以在列表框中顯示來自數據庫的項目,但我需要的是,如果我在列表框中選擇一個值,它會將該人員的信息顯示迴文本框。那就是我從來沒有去過的東西 –