WPF 프로젝트로 C# 코드를 작성하고 있습니다. 컴퓨터에서 Microsoft Access 데이터베이스에서 하나의 항목을 선택하는 곳에 ComboBox1 드롭 다운이 있습니다. 사용자가 무언가를 선택한 직후 사용자가 방금 선택한 텍스트 블록으로 이동 한 것과 같은 행에서 특정 값을 검색하려고합니다.WPF를 사용하여 성공적으로 연결 한 후 Access 데이터베이스에서 데이터를 가져올 수 없습니다.
모두 같고 ""이라는 오류가 발생했습니다. '연결'이름이 현재 컨텍스트에 존재하지 않습니다.. " 이 문제를 해결하는 방법을 모르겠습니다.
OleDbConnection connect = new OleDbConnection();
그러나 ComboBox1_SelectedIndexChanged
에 그렇게하지 : MainWindow_Load
에서
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Data.OleDb;
using System.Data.SqlClient;
using System.Data;
using System.ComponentModel;
namespace bundlecalc
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
MainWindow_Load();
}
private void MainWindow_Load()
{
OleDbConnection connect = new OleDbConnection();
connect.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Projects\Database.accdb;
Persist Security Info = False; ";
connect.Open();
OleDbCommand command = new OleDbCommand();
command.Connection = connect;
command.CommandText = "SELECT Column1 FROM Table1";
OleDbDataReader reader = command.ExecuteReader();
while(reader.Read())
{
ComboBox1.Items.Add(reader["Column1"].ToString());
}
connect.Close();
}
private void ComboBox1_SelectedIndexChanged(object sender, RoutedEventArgs e)
{
connect.Open();
OleDbCommand command = new OleDbCommand();
command.Connection = connect;
string query = "select * from Table1 where Column1 ='" + ComboBox1.Text + "'";
command.CommandText = query;
OleDbDataReader reader = command.ExecuteReader();
while (reader.Read())
{
BetaAnswer.Text = reader["ValueFromRow"].ToString();
}
connect.Close();
}
}
}
declare connect as class member –
@viveknuna : 나쁜 생각. 오래 지속되는 클래스에서 열린 연결 오브젝트를 유지하는 것은 단지 오류를 묻는 것입니다. – David