it-swarm.com.de

So füllen Sie DataTable mit SQL-Tabelle

Ich erstelle und lese gerade eine DataTable mit dem folgenden Code in meiner PageLoad

protected void Page_Load(object sender, EventArgs e)
{
    if (Session["AllFeatures1"] == null)
    {
        Session["AllFeatures1"] = GetData();
    }
    table = (DataTable)Session["AllFeatures1"];
    DayPilotCalendar1.DataSource = Session["AllFeatures1"];
    DayPilotNavigator1.DataSource = Session["AllFeatures1"];

    if (!IsPostBack)
    {
        DataBind();
        DayPilotCalendar1.UpdateWithMessage("Welcome!");
    }

    if (User.Identity.Name != "")
    {
        Panel1.Visible = true;
    }
}

Ich möchte wissen, wie man diesen Code konvertiert, damit er aus einer SQL-Abfrage liest? Ich experimentiere mit dem folgenden Code, aber ich bin nicht sicher, wie ich sie verbinden soll, so dass sich die in meiner Seitenladefähigkeit befindliche Datei mit dem folgenden SQL-Befehl ausfüllt.

SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["BarManConnectionString"].ConnectionString);
conn.Open();
string query = "SELECT * FROM [EventOne]";

SqlCommand cmd = new SqlCommand(query, conn);

DataTable t1 = new DataTable();
using (SqlDataAdapter a = new SqlDataAdapter(cmd))
{
    a.Fill(t1);
}
11
AhabLives

Sie müssen die Methode GetData() ändern und dort Ihren "experimentellen" Code einfügen .. und t1 zurückgeben.

Erledigt.

5
banging

SqlDataReader ist eine gültige Datenquelle für DataTable. Alles, was Sie dazu brauchen, ist folgendes:

public DataTable GetData()
{
    SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["BarManConnectionString"].ConnectionString);
    conn.Open();
    string query = "SELECT * FROM [EventOne]";
    SqlCommand cmd = new SqlCommand(query, conn);

    DataTable dt = new DataTable();
    dt.Load(cmd.ExecuteReader());
    conn.Close();
    return dt;
}
30
HenryZhang

Sie können eine Methode erstellen, die die Datentabelle der angegebenen SQL-Abfrage zurückgibt:

public DataTable GetDataTable()
{
SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["BarManConnectionString"].ConnectionString);
conn.Open();
string query = "SELECT * FROM [EventOne] ";

SqlCommand cmd = new SqlCommand(query, conn);

DataTable t1 = new DataTable();
using (SqlDataAdapter a = new SqlDataAdapter(cmd))
{
    a.Fill(t1);
}
return t1;
}

und kann jetzt so verwendet werden:

table = GetDataTable();
7
Akash KC

Die obigen Antworten sind richtig, aber ich dachte, ich würde eine andere Antwort erweitern, indem ich ihnen eine Möglichkeit anbiete, das Gleiche zu tun, wenn Sie Parameter in die Abfrage übergeben müssen.

Die SqlDataAdapter ist schnell und einfach, funktioniert jedoch nur, wenn Sie eine Tabelle mit einer statischen Anforderung füllen, dh: eine einfache SELECT ohne Parameter.

Hier ist mein Weg, das Gleiche zu tun, aber die Parameter, die ich in meiner Tabelle benötige, über einen Parameter zu steuern. Und ich benutze es, um eine DropDownList zu füllen.

//populate the Programs dropdownlist according to the student's study year / preference
DropDownList ddlPrograms = (DropDownList)DetailsView1.FindControl("ddlPrograms");
if (ddlPrograms != null)
{
    using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ATCNTV1ConnectionString"].ConnectionString))
    {
        try
        {
            con.Open();
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = con;
            cmd.CommandText = "SELECT ProgramID, ProgramName FROM tblPrograms WHERE ProgramCatID > 0 AND ProgramStatusID = (CASE WHEN @StudyYearID = 'VPR' THEN 10 ELSE 7 END) AND ProgramID NOT IN (23,112,113) ORDER BY ProgramName";
            cmd.Parameters.Add("@StudyYearID", SqlDbType.Char).Value = "11";
            DataTable wsPrograms = new DataTable();
            wsPrograms.Load(cmd.ExecuteReader());

            //populate the Programs ddl list
            ddlPrograms.DataSource = wsPrograms;
            ddlPrograms.DataTextField = "ProgramName";
            ddlPrograms.DataValueField = "ProgramID";
            ddlPrograms.DataBind();
            ddlPrograms.Items.Insert(0, new ListItem("<Select Program>", "0"));
        }
        catch (Exception ex)
        {
            // Handle the error
        }
    }
}

Genießen

1
Fandango68

Sie können Ihre Datentabelle mit dem folgenden Code füllen. Ich rufe die Verbindungen zur Laufzeit auch mit einer vordefinierten XML-Datei ab, die alle Verbindungen enthält.

  public static DataTable Execute_Query(string connection, string query)
    {
        Logger.Info("Execute Query has been called for connection " + connection);
        connection = "Data Source=" + Connections.run_singlevalue(connection, "server") + ";Initial Catalog=" + Connections.run_singlevalue(connection, "database") + ";User ID=" + Connections.run_singlevalue(connection, "username") + ";Password=" + Connections.run_singlevalue(connection, "password") + ";Connection Timeout=30;";
        DataTable dt = new DataTable();
        try
        {
            using (SqlConnection con = new SqlConnection(connection))
            {
                using (SqlCommand cmd = new SqlCommand(query, con))
                {
                    con.Open();
                    using (SqlDataAdapter da = new SqlDataAdapter(cmd))
                    {
                        da.SelectCommand.CommandTimeout = 1800;
                        da.Fill(dt);
                    }
                    con.Close();
                }
            }
            Logger.Info("Execute Query success");
            return dt;
        }
        catch (Exception ex)
        {
            Console.Write(ex.Message);
            return null;
        }
    }   
0
Faisal Ansari