Hallo,
ich will eine Methode aus einer externen Klasse, in der Main-Methode aufrufen. Aber der sagt mit, das dieser im aktuellen Kontext nicht vorhanden sei:
(Beim ersten Codeblock ist nur der Teil ganz unten wichtig)
Main-Methode:
Die andere Klasse mit der Methode:
ich habe mir die Seele aus dem Leib gegoogelt, aber finde nicht passendes.
Hoffe jemand kann mir helfen.
Danke schonmal!
ich will eine Methode aus einer externen Klasse, in der Main-Methode aufrufen. Aber der sagt mit, das dieser im aktuellen Kontext nicht vorhanden sei:
(Beim ersten Codeblock ist nur der Teil ganz unten wichtig)
Main-Methode:
Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ImportCSVtoSQL
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public void btnImport_Click(object sender, EventArgs e)
{
Cursor = Cursors.WaitCursor; // Wandelt während der dauert vom Import den Mauszeiger in den "Ladenden" Runden Mauszeiger um.
DataTable importData = GetDataFromFile(); // Weist dem "DatabTable" die von der Methode "GetDataFromFile();" erzeugten Daten zu.
if (importData == null) // ICH GLAUBE: Wenn in "importData" nichts drinne ist, gibt er nichts zurück, wenn was drinne ist führt er die Methode "SaveImportDataToDatabase(importData)" aus.
{
return;
}
SaveImportDataToDatabase(importData);
MessageBox.Show("Import Complete"); // Wenn die Schritte davor durchgeführt wurden kommt eine Fester das "Import Complete" ausgibt.
txtFileName.Text = string.Empty; // Löscht den Pfad in der Textbox
Cursor = Cursors.Default; // Wandelt den Cursor wieder in den normalen zustand.
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
//
}
private void btnBrowse_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.DefaultExt = ".csv"; // ?
ofd.Filter = "Comma Separated (*.csv)|*.csv"; // ?
ofd.ShowDialog(); // Öffnet den Windows Explorer
txtFileName.Text = ofd.FileName; // Schreibt in die Textbox den Pfad der Datei
}
private void btnClose_Click(object sender, EventArgs e)
{
this.Close(); // Schließt das Fenster
}
public DataTable GetDataFromFile()
{
DataTable importedData = new DataTable(); // Erstellt eine "DataTable"
try
{
using (StreamReader sr = new StreamReader(txtFileName.Text))
{
string header = sr.ReadLine();
if (string.IsNullOrEmpty(header)) // ? Wenn Textbox leer dann das ausgeben ???? oder schaut nach ob die erste Zeile vom File befüllt ist
{
MessageBox.Show("No file data");
return null;
}
string[] headerColumns = header.Split(',');
foreach (string headerColumn in headerColumns)
{
importedData.Columns.Add(headerColumn);
}
while (!sr.EndOfStream)
{
string line = sr.ReadLine();
if (string.IsNullOrEmpty(line))
{
continue;
}
string[] fields = line.Split(',');
DataRow importedRow = importedData.NewRow();
for (int i = 0; i < fields.Count(); i++)
{
importedRow[i] = fields[i];
}
importedData.Rows.Add(importedRow);
}
}
}
catch (Exception e)
{
Console.WriteLine("The file could not be read:");
Console.WriteLine(e.Message);
}
return importedData;
}
DBHelper saveImport = new DBHelper();
saveImport.SaveImportDataToDatabase(); // SO RUFT MAN DOCH ASU EINER KLASSE EINE METHODE AUF ODER?
}
}
Die andere Klasse mit der Methode:
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
using System.Data;
namespace ImportCSVtoSQL
{
public class DBHelper
{
protected Form1 save;
public DBHelper()
{
this.importData = SaveImportDataToDatabase; // DACHTE ICH MUSS EINFACH EIN KONSTRUKTOR EINFÜGEN, KRIEGE ES ABER NICHT HIN IRGENDWIE
}
public void SaveImportDataToDatabase(DataTable importData)
{
using (SqlConnection conn = new SqlConnection("Server=localhost; Database=TestDB;Trusted_Connection=True;"))
{
conn.Open();
foreach (DataRow importRow in importData.Rows)
{
SqlCommand cmd = new SqlCommand("INSERT INTO ImportData (StatioID, ClientID, rate, ShowTitleID) " +
"VALUES (@stationId, @clientId, @rate, @showTitleID)", conn);
cmd.Parameters.AddWithValue("@stationId", importRow["StationID"]);
cmd.Parameters.AddWithValue("@clientId", importRow["ClientID"]);
cmd.Parameters.AddWithValue("@rate", importRow["rate"]);
cmd.Parameters.AddWithValue("@showTitleID", importRow["ShowTitleID"]);
cmd.ExecuteNonQuery();
}
}
}
}
}
ich habe mir die Seele aus dem Leib gegoogelt, aber finde nicht passendes.
Hoffe jemand kann mir helfen.
Danke schonmal!
Zuletzt bearbeitet: