Написал класс по примеру из 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);
Вопроос то вот в чем, как правильно вызывать-то? В моем конкретном случае...
Виртуальный выделенный сервер (VDS) становится отличным выбором
Пользуюсь библиотекой ItextsharpМой код почему то не хочет работать, он то сохраняет файл, но не открывает или он вообще не создаётся
При добавлении миграции в таблицу дублируется поле (но в конце с 1):
Работал когда-то с wpf, прошел курс, написал проект и забылИ вот, опять имею с ним дело
Есть таблица tb_productsНадо воспроизвести поиск по двум столбцам: title и description