C# 如何从数据库中检索记录,并将其与表单加载中的索引按顺序排列
我第一次尝试搜索数据库中的记录;我有一个windows窗体项目,它在加载事件时在文本框中显示Access数据库中的名称。表单的内容不止这些,但出于实用目的,我有“上一步”、“下一步”和“查找”按钮。假设数据库中有4个名字:1-Atlas、2-Benson、3-Lane和4-Smith。表单加载并显示地图册。搜索车道,然后在表单上显示车道。点击“下一步”,显示的不是史密斯,而是本森。我知道它为什么这样做:搜索将记录放在数据行“returnedRow”中,而表单加载和“Previous”和“Next”中显示的所有记录都来自数据行“dRow”。如何从dRow内部的查询中检索记录C# 如何从数据库中检索记录,并将其与表单加载中的索引按顺序排列,c#,winforms,ms-access-2010,C#,Winforms,Ms Access 2010,我第一次尝试搜索数据库中的记录;我有一个windows窗体项目,它在加载事件时在文本框中显示Access数据库中的名称。表单的内容不止这些,但出于实用目的,我有“上一步”、“下一步”和“查找”按钮。假设数据库中有4个名字:1-Atlas、2-Benson、3-Lane和4-Smith。表单加载并显示地图册。搜索车道,然后在表单上显示车道。点击“下一步”,显示的不是史密斯,而是本森。我知道它为什么这样做:搜索将记录放在数据行“returnedRow”中,而表单加载和“Previous”和“Next
OleDbConnection myConn = new OleDbConnection();
DataSet myDS;
int MaxRows = 0
int inc = 0;
private void Form1_Load(object sender, EventArgs e)
{
myConn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Temp\Testing\TestDatabase.accdb";
myConn.Open();
myDS = new DataSet();
string sql = "SELECT * From Test";
OleDbDataAdapter myDA = new OleDbDataAdapter(sql, myConn);
myDA.Fill(myDS, "People");
NavigateRecords();
MaxRows = myDS.Tables["People"].Rows.Count;
myConn.Close();
}
private void NavigateRecords()
{
DataRow dRow = myDS.Tables["People"].Rows[inc];
txtName.Text = dRow.ItemArray.GetValue(1).ToString();
txtAddress.Text = dRow.ItemArray.GetValue(2).ToString();
txtCity.Text = dRow.ItemArray.GetValue(3).ToString();
txtState.Text = dRow.ItemArray.GetValue(4).ToString();
txtZip.Text = dRow.ItemArray.GetValue(5).ToString();
}
private void btnNext_Click(object sender, EventArgs e)
{
if (inc != MaxRows - 1)
{
inc++;
NavigateRecords();
}
else
{
MessageBox.Show("No more rows");
}
}
private void btnFind_Click(object sender, EventArgs e)
{
string searchFor = txtFind.Text;
int results = 0;
if (txtFind.Text.Trim() == "")
{
MessageBox.Show("Nothing to search for");
return;
}
DataRow[] returnedRows;
string expression;
expression = "Name1='" + searchFor + "'";
returnedRows = myDS.Tables["People"].Select(expression);
results = returnedRows.Length;
if (results > 0)
{
DataRow dr1;
dr1 = returnedRows[0];
txtName.Text = dr1[1].ToString();
txtAddress.Text = dr1[2].ToString();
txtCity.Text = dr1[3].ToString();
txtState.Text = dr1[4].ToString();
txtZip.Text = dr1[5].ToString();
}
else
{
MessageBox.Show("No record found");
}
}
你是说这部分
private void NavigateRecords()
{
DataRow dRow = myDS.Tables["People"].Rows[inc];
txtName.Text = dRow[1];
txtAddress.Text = dRow[2];
txtCity.Text = dRow[3];
txtState.Text = dRow[4];
txtZip.Text = dRow[5];
}
该部分在表单加载时显示记录,并在选择“下一个”或“上一个”时使用。但要在数据库returnedRows=myDS.Tables[“People”]上进行搜索,请选择(表达式);使用。returnedRows是一个数组,而dRow不是。如果我尝试dRow=myDS.Tables[“People”]。选择(表达式);在Find中,我得到“不能隐式地将类型DataRow[]转换为DataRow”。