C# 如果在列表框中选择“索引”,则将列表框链接到数据库并在文本框中显示值。C
这可以在列表框中显示数据库中的项目,但如果我在列表框中选择了一个值,它会将有关此人的信息显示回文本框。这就是我不能去工作的地方C# 如果在列表框中选择“索引”,则将列表框链接到数据库并在文本框中显示值。C,c#,mysql,C#,Mysql,这可以在列表框中显示数据库中的项目,但如果我在列表框中选择了一个值,它会将有关此人的信息显示回文本框。这就是我不能去工作的地方 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
namespace program
{
public partial class Form8 : Form
{
public Form8()
{
InitializeComponent();
fill_listbox();
}
void fill_listbox()
{
string constring = "datasource=sql2.freesqldatabase.com;port=3306;username=sql217040;password=xxxxx";
string Query = "select * from sql217040.fakedata ;";
MySqlConnection conDataBase = new MySqlConnection(constring);
MySqlCommand cmdDataBase = new MySqlCommand(Query, conDataBase);
MySqlDataReader myReader;
try
{
conDataBase.Open();
myReader = cmdDataBase.ExecuteReader();
while (myReader.Read())
{
string id1 = myReader.GetString("id");
string name1 = myReader.GetString("name");
string surname1 = myReader.GetString("surname");
listBox1.Items.Add(id1 + ' ' + name1 + ' ' + surname1);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
string constring = "datasource=sql2.freesqldatabase.com;port=3306;username=sql217040;password=xxxxx";
string Query = "select * from sql217040.fakedata where name='" + listBox1.Text + "' ;";
MySqlConnection conDataBase = new MySqlConnection(constring);
MySqlCommand cmdDataBase = new MySqlCommand(Query, conDataBase);
MySqlDataReader myReader;
try
{
conDataBase.Open();
myReader = cmdDataBase.ExecuteReader();
while (myReader.Read())
{
string sname = myReader.GetString("name");
string ssurname = myReader.GetString("surname");
string sphone = myReader.GetString("phone");
textBox1.Text = sname;
textBox2.Text = ssurname;
//telephone.Text = sphone;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
}
理想情况下,我会将您的列表框更改为datagridview,并像这样更改您的方法
void fill_listbox()
{
try
{
string constring = "datasource=sql2.freesqldatabase.com;port=3306;username=sql217040;password=xxxxx";
string Query = "select * from sql217040.fakedata ;";
using(MySqlConnection conDataBase = new MySqlConnection(constring))
{
conDataBase.Open();
using (SqlDataAdapter a = new SqlDataAdapter(Query, conDataBase))
{
DataTable t = new DataTable();
a.Fill(t);
// Render data onto the screen
dataGridView1.DataSource = t; // <-- datagridview1 is the gridview i have added
}
}
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
为什么不使用DataSet而不是DataReader呢
只需将所有项目添加到listbox中,并通过listbox SelectEditedIndex从DataSet获取所选项目。当listbox selected index更改时,这将保存额外的查询。您没有为作业使用正确的工具。您应该使用listview/datagridview而不是listbox。这也将节省您往返数据库的时间/您面临的问题是什么?当我在列表框中选择索引时,文本框中的值不会出现
private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
string name = dataGridView1.Rows[e.RowIndex].Cells["columnname"].Value.ToString();
}