如何阅读在MS Access数据库中的数据,并在列表框中显示。 我有代码在这里,但我得到的错误。
private void button3_Click(object sender, EventArgs e)
{
using (OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\\Sisc-stronghold\mis!\wilbert.beltran\DataBase\DataStructure.accdb"))
using(OleDbCommand cmd = new OleDbCommand(" SELECT * from TableAcct", conn))
{
conn.Open();
OleDbDataReader Reader = cmd.ExecuteReader();
//if (Reader.HasRows)
if (Reader.HasRows)
{
Reader.Read();
listBox1.Text = Reader.GetString("FirstName");
}
}
错误的位置:1.错误1的最佳重载的方法匹配for'System.Data.Common.DbDataReader.GetString(INT)”有一些无效的参数。 2.错误2参数“1”:不能从“字串”转换为“INT”
Answer 1:
试试这个,
List<String> firstName = new List<String>();
List<String> lastName = new List<String>();
private void loadButton_Click(object sender, EventArgs e)
{
cn.Open();
OleDbDataReader reader = null;
cmd = new OleDbCommand("select* from Records", cn);
reader = cmd.ExecuteReader();
while (reader.Read())
{
firstName.Add(reader["FirstName"].ToString());
lastName.Add(reader["LastName"].ToString());
}
cn.Close();
}
那么在您的搜索按钮,插入此,
private void searchButton_Click(object sender, EventArgs e)
{
clearSearchResult();
try
{
int totalItems = FirstName.Count;
int count = 0;
while (count < totalItems)
{
if (textBox6.Text == FirstName[count].ToString())
{
listBox1.Items.Add(FirstName[count].ToString());
count = 100;
}
else
{
count++;
}
这是很好的,当你想显示的信息,使用"FirstName"
在listBox1_SelectedIndexChanged
如果你想。 这里有一个例子,
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
int totalItems = lastName.Count;
int count = 0;
while (count < totalItems)
{
if ((listBox1.SelectedItem.ToString()) == firstName[count].ToString()))
{
textBox1.Text = firstName[count].ToString();
textBox2.Text = lastName[count].ToString();
count = 100;
}
else
{
count++;
}
}
希望这可以帮助,
Answer 2:
更改
listBox1.Text = Reader.GetString("FirstName");
至
listBox1.Text = Reader.GetString(0); // zero base ordinal of column
Answer 3:
GetString()
采用int作为参数而不是字符串。 这意味着你必须使用列的索引。
在您的具体情况为“姓”是第二列的索引是1:
listBox1.Text = Reader.GetString(1);
http://msdn.microsoft.com/en-us/library/system.data.oledb.oledbdatareader.getstring.aspx
Answer 4:
你的使用While循环
while(reader.Read())
{
listbox1.Items.Add(reader["FirstName"]);
}
这种移动通过你选择的行。 reader.Read()
返回false
,如果没有更多的行。
另外:如果你想从一列retrive valmue我建议你用食指在做reader
的实例。 像我的例子。
var value = reader["ColumnName"];
这增加了可读性比较
var value = reader.GetString(0);
UPDATE
如果你想只显示拳头价值-我建议你使用cmd.ExecuteScalar()
和适应你的SQL只返回所需的值:
using(OleDbCommand cmd = new OleDbCommand("SELECT firstname from TableAcct", conn))
{
conn.Open();
var firstName = cmd.ExecuteScalar();
}
要知道这会给你在表中的第一个 “名字”。 而且,由于不存在"order by firstname"
或"where someKey = 1"
-这可能不是rturn你的预期。
Answer 5:
如果你想创建MS Access数据库,并对其进行访问,并在某些组件来显示数据,就像在这里,我将展示you.how与MS Access数据库和显示数据从数据库中标签连接。 首先,创建任何Access数据库喜欢这里“PirFahimDataBase”。 现在,在您的Visual Studio转到菜单和做到这一点
- 单击数据
- 添加新数据基地
- 点击下一步
- 单击新建连接
- 现在,通过单击更改更改数据源,并选择Microsoft Access数据库文件
- 点击浏览选择您所创建的数据库
现在,在按钮ClickEvent粘贴这些代码将得到的数据基本数据并显示它的标签
using System.Windows.Forms; //these two lines should be written before namespace at top of the program
using System.Data.OleDb;
private void button1_Click(object sender, EventArgs e)
{
System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection();
conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;" +
@"Data source= C:\Users\pir fahim shah\Documents\PirFahimDataBase.accdb";
try
{
conn.Open();
MessageBox.Show("connected successfuly");
OleDbDataReader reader = null; // This is OleDb Reader
OleDbCommand cmd = new OleDbCommand("select TicketNo from Table1 where Sellprice='6000' ", conn);
reader = cmd.ExecuteReader();
while (reader.Read())
{
label1.Text= reader["TicketNo"].ToString();
}
}
catch (Exception ex)
{
MessageBox.Show("Failed to connect to data source");
}
finally
{
conn.Close();
}
}//end of button click event
Answer 6:
你的错误是在这一行:
listBox1.Text = Reader.GetString("FirstName");
您必须在通过一些GetString()
函数。
Answer 7:
DataColumn[] PrimaryKeyColumn = new DataColumn[1]; //Define Primary coloumn
DataSet dataSet = new DataSet();
DataTable dataTable = new DataTable();
ReadAndUpdateExcel.ReadExcel(strPath, sheetName, out dataSet);
dataSet.Tables.Add(dataTable);
PrimaryKeyColumn[0] = dataSet.Tables[0].Columns[0];
dataSet.Tables[0].PrimaryKey = PrimaryKeyColumn;
string num = dataSet.Tables[0].Rows[dataSet.Tables[0].Rows.IndexOf(dataSet.Tables[0].Rows.Find(strTCName))]["ACNO"].ToString();
//string country
文章来源: Getting data from MS Access database and display it in a listbox