Написал класс по примеру из https://stackoverflow.com/questions/13135321/how-to-create-a-method-in-a-class-that-would-connect-to-my-database-on-calling
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.OleDb;
using System.Diagnostics;
namespace CntDscnt
{
class Base_Class
{
public List<string> cnctVars = new List<string>();
public OleDbConnection FlCnctn()
{
OleDbConnection con = new OleDbConnection();
string DBPath = cnctVars[0];
con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + DBPath ;
return con;
}
public OleDbDataReader FlReader()
{
string strSQL = "SELECT * FROM table1";
OleDbCommand command = new OleDbCommand(strSQL, FlCnctn());
OleDbDataReader reader = command.ExecuteReader();
return reader;
}
public void readDB()
{
while (FlReader().Read())
{
Debug.WriteLine((FlReader().GetInt32(0)) + " val");
}
}
}
}
Вызываю из класса формы
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 System.Diagnostics;
namespace CntDscnt
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
Base_Class base_Class = new Base_Class();
OpenFileDialog OPF = new OpenFileDialog();
private void Label1_Click(object sender, EventArgs e)
{
OPF.Filter = "accdb files (*.accdb)|*.accdb|All files (*.*)|*.*";
if (OPF.ShowDialog() == DialogResult.OK)
{
label1.Text = OPF.FileName;
base_Class.cnctVars.Add(OPF.FileName);
//_Base_Class.cnctVars.Add(_OpenFileDialog.FileName);
//
}
}
private void Button1_Click(object sender, EventArgs e)
{
base_Class.FlCnctn().Open();
}
private void Button2_Click(object sender, EventArgs e)
{
base_Class.FlCnctn().Close();
}
private void Button3_Click(object sender, EventArgs e)
{
Debug.WriteLine(base_Class.FlCnctn().State);
}
private void Button4_Click(object sender, EventArgs e)
{
base_Class.readDB();
}
}
}
Если вызывать в теле метода открыть соединение, то оно открывается и у возвращаемого OleDbConnection state == Open
public OleDbConnection FlCnctn()
{
OleDbConnection con = new OleDbConnection();
string DBPath = cnctVars[0];
con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + DBPath;
con.Open();
return con;
}
А если вызывать так
base_Class.FlCnctn().Open();
то ничего не вызывается, но и компилятор не ругается, хотя State показывает при таком обращении правильно
Debug.WriteLine(base_Class.FlCnctn().State);
Вопроос то вот в чем, как правильно вызывать-то? В моем конкретном случае...
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Пользуюсь библиотекой ItextsharpМой код почему то не хочет работать, он то сохраняет файл, но не открывает или он вообще не создаётся
При добавлении миграции в таблицу дублируется поле (но в конце с 1):
Работал когда-то с wpf, прошел курс, написал проект и забылИ вот, опять имею с ним дело
Есть таблица tb_productsНадо воспроизвести поиск по двум столбцам: title и description