Abfrage einer SQL Datenbank


julmer39

Grünschnabel
Hallo liebe Forumsmitglieder,

als C# Neuling habe ich eine Frage an die Profis. Ich möchte gerne ganz einfach eine Verbindung zu einer lokalen SQL Datenbank herstellen (das hat soweit geklappt) und einfach einen Datensatz abfragen und in Textfeld ausgeben lassen. Die Ausgabe zum Textfeld klappt leider noch nicht so. Kann mir vielleicht jemand helfen an was liegt?

C#:
using System;
using System.Collections.Generic;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;


namespace DatabaseConnection
{
    public partial class Form1 : Form
   {
        public void WriteSomething(string s)
    {
        System.Console.WriteLine(s);
    }

 
 
 
 
private  SqlConnection myConnection;
     

        public Form1()
        {
            InitializeComponent();
         
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void btnConnect_Click_1(object sender, EventArgs e)
        {
            SqlConnection myConnection = new SqlConnection("Data Source=CZC3399PQ5\\SQLEXPRESS;" +
                                                            //"Trusted_Connection=yes;" +
                                                            "Integrated Security=True;" +
                                                            //"database=ITPLocal; " +
                                                            "Initial Catalog=ITPLocal;" +
                                                            "connection timeout=30");
                                                         
        


            try
            {
                myConnection.Open();
                MessageBox.Show("Well done!");
            }
            catch (SqlException ex)
            {
                MessageBox.Show("You failed!" + ex.Message);
            }

      
        }


        private void listBoxTables_SelectedIndexChanged(object sender, EventArgs e)
      {
            SqlCommand Command = new SqlCommand("select ItpID from ITP", myConnection);
            SqlDataReader Reader = Command.ExecuteReader();
            while (Reader.Read())

            {
                WriteSomething(Reader[0] + "<br>");
            }

            myConnection.Close();
      }

    }
}
 
Zuletzt bearbeitet von einem Moderator:

sheel

I love Asm
Hi und Willkommen bei tutorials.de,

Bitte füg deinen Code nocheinmal mit Einrückungen ein (im ursprünglichen Beitrag).
Und C# ist nicht C++, werde verschieben...

edit von unten oben eingefügt
 
Zuletzt bearbeitet:

sheel

I love Asm
Zum Problem: Also die Ausgabe auf die Konsole passt?
Was ist dann das Problem? Für eine Textbox t kannst du einfach mit t.Text=... den Inhalt setzen.
 

Spyke

Premium-User
Kriegst du eine NullRefeneceException oder ArgumentNullReferenceException?
Du hast in deiner Klasse ein privates Feld myConnection.

In deienr Event Methode btnConnect_Click_1 erstellst du aber intern eine neue Variable names myConnection mit dem du eine Verbindugn aufbaust.

listBoxTables_SelectedIndexChanged, kennt aber natürlich nur das private Feld der Klasse myConnection.

Eigentlich sollte:
Code:
SqlCommand Command = new SqlCommand("select ItpID from ITP", myConnection);
einen Fehler schmeißen da myConnection null ist.
Laut deinem Code.
 

julmer39

Grünschnabel
Hallo zusammen,

ich möchte gerne den Inhalt einer listBox ausdrucken. Das Drucken klappt soweit nur ohne Inhalt.
Hat vielleicht jemand eine Idee was da noch fehlt?

Viele Grüße

Jochen

Code:
privatevoid buttonDrucken_Click(object sender, EventArgs e)
{
  printDialog1.Document = printDocument1;
  string strText = "";
  foreach (object x in listBoxTables.Items)
{
   strText = strText + x.ToString() + "\n";
}
   myReader = newStringReader(strText);
   if (printDialog1.ShowDialog() == DialogResult.OK)
{
  this.printDocument1.Print();
}
}
  protectedvoid printDocument1_PrintPage(object sender,
   System.Drawing.Printing.PrintPageEventArgs ev)
{
  float linesPerPage = 0;
  float yPosition = 0;
  int count = 0;
  float leftMargin = ev.MarginBounds.Left;
  float topMargin = ev.MarginBounds.Top;
  string line = null;
  Font printFont = this.listBoxTables.Font;
  SolidBrush myBrush = newSolidBrush(Color.Black);
// Work out the number of lines per page, using the MarginBounds.
   linesPerPage =
   ev.MarginBounds.Height / printFont.GetHeight(ev.Graphics);
  while (count < linesPerPage && ((line = myReader.ReadLine()) != null))
{
  // calculate the next line position based on
  // the height of the font according to the printing device
   yPosition = topMargin + (count * printFont.GetHeight(ev.Graphics));
  // draw the next line in the rich edit control
   ev.Graphics.DrawString(line, printFont,
   myBrush, leftMargin,
   yPosition, newStringFormat());
   count++;
}
  // If there are more lines, print another page.
  if (line != null)
   ev.HasMorePages = true;
  else
   ev.HasMorePages = false;
   myBrush.Dispose();
}
 

Spyke

Premium-User
Erstell am besten neue Thread bei Fragen die mit dem aktuellem nixs mehr zu tun haben.

Auf anhieb würde ich erstmal sagen deine Koordinaten liegen außerhalb des Druckbarenbereichen, oder dein MyReader hat nixs zum lesen, weshalb er nicht in den Block der while schleife reinläuft.

Prüft mal per debugging ob er in den while block reinläuft, und wie da dann ev. der text von "line" ist (sowie x, y angaben).
 

TeacherRolf

Grünschnabel
Hallo Julmer39
Ich hab mal dein Prog in eines meiner bestehenden Prjekte übernommen. Dabei hab ich nur die Namen von Printdialog, Printdokument und Listbox (bei mir Combobox) geändert und myReader global eingetragen (Instanziierung wie bei dir). Und es ging. Bei mir wurde der komplette Inhalt ausgegeben ==> der Druckbereich stimmt. Steht in Deiner Liste wirklich was drin?

Gruß Rolf
 

Forum-Statistiken

Themen
272.356
Beiträge
1.558.615
Mitglieder
187.831
Neuestes Mitglied
gorke