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「System.Data.Common.DbDataReader.GetString(int)」に最もよく一致するオーバーロードされたメソッドには、いくつかの無効な引数があります。 2.エラー2引数「1」:「string」から「int」に変換できません
これを試してみてください
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++;
}
}
お役に立てれば、
MS Accessデータベースを作成してアクセスし、一部のコンポーネントでデータを表示する場合は、ここで説明します。MSAccessデータベースに接続し、データベースのデータをLabelに表示する方法を説明します。 まず、ここ「PirFahimDataBase」のようなAccessデータベースを作成します。次に、Visual Studioでメニューに移動し、これを実行します ==
Button 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
GetString()
は、文字列ではなくintをパラメータとして受け取ります。つまり、列のインデックスを使用する必要があります。
「FirstName」が2番目の列であるため、特定の状況では、インデックスは1になります。
listBox1.Text = Reader.GetString(1);
http://msdn.Microsoft.com/en-us/library/system.data.oledb.oledbdatareader.getstring.aspx
変化する
listBox1.Text = Reader.GetString("FirstName");
に
listBox1.Text = Reader.GetString(0); // zero base ordinal of column
Whileループを使用している
_while(reader.Read())
{
listbox1.Items.Add(reader["FirstName"]);
}
_
これにより、選択したすべての行が移動します。 reader.Read()
は、行がなくなった場合にfalse
を返します。
また、列からvalmueを取得する場合は、reader
インスタンスのインデックスを使用して取得することをお勧めします。私の例のように。
_var value = reader["ColumnName"];
_
これにより、
_var value = reader.GetString(0);
_
[〜#〜]更新[〜#〜]
最初の値のみを表示したい場合は、cmd.ExecuteScalar()
を使用し、必要な値のみを返すようにSQLを適応させることをお勧めします。
_using(OleDbCommand cmd = new OleDbCommand("SELECT firstname from TableAcct", conn))
{
conn.Open();
var firstName = cmd.ExecuteScalar();
}
_
これにより、テーブルにfirst "FirstName"が表示されることに注意してください。そして、_"order by firstname"
_または_"where someKey = 1"
_がないので、これはあなたが期待したようにはならないかもしれません。
あなたのエラーはこの行にあります:
_listBox1.Text = Reader.GetString("FirstName");
_
GetString()
関数で数値を渡す必要があります。
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