Avatar billede hawk88 Nybegynder
20. maj 2008 - 11:59 Der er 22 kommentarer og
1 løsning

Windows app. der kan connecte til SQL

Hej

Skal have lavet et windows program i C#, hvor man skal logge ind også derfra tilføje ting i databasen, det med at tilføje ting osv, det kan jeg godt finde ud af.

Men det med at få lavet login til SQL databasen, hvor man skal taste brugernavn og password, hvor brugernavnet og pass er noget der ligger i databasen.

Nogen der kan hjælpe mig?

Der skal vel laves noget SQL connection og noget der tjekker pass og username. Jeg bruger forresten SQL Express.
Avatar billede hawk88 Nybegynder
20. maj 2008 - 12:03 #1
Vil gerne give alle mine point til den der kommer med en løsning. :)
Avatar billede aaberg Nybegynder
20. maj 2008 - 12:39 #2
Brug følgende connectionstring:
Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;

Så opretter du bare en connection og prøver at forbinde til databasen og køre en eller anden query. Hvis du får en fejl, skriver du fejlmeddelelsen ud til brugeren. Hvis brugernavn eller password er forkert, vil der automatisk komme en fejlmeddelelse som fortæller dette.

En metode som tjekker brugernavn/password, kan se nogenlunde ud som dette (Ikke testet):

public bool Connect(out string errormessage, string connectionstring)
{
  try
  {
      error = string.empty;
      SqlConnection connection = new SqlConnection(connectionstring);
      SqlCommand command = connection.CreateCommand();

      command.CommandText = "select 1";

      if ((int)command.ExecuteScalar() == 1)
        return true;
      else
      {
        error = "Unknown error";
        return false;
      }
  }
  catch(Exception ex)
  {
      error = ex.Message;
      return false;
  }
}
 

for at bruge metoden:

string errormessage;
if (Connect(out errormessage, "Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;"))
{
  //brugeren er forbundet til databasen.
}
else
{
  //brugeren er ikke forbundet med databasen.
  MessageBox.Show(errormessage);
}
Avatar billede hawk88 Nybegynder
20. maj 2008 - 12:51 #3
Hmm, tingene skal jo hænge sammen med to textbokse og en knap der logger en ind i systemet. Der skal vel os laves noget event handler for den?

Er det du har skrevet ikke en form for consol programmering og ikke windows programmering?
Avatar billede aaberg Nybegynder
20. maj 2008 - 13:23 #4
Det jeg har lavet her er ikke knyttet til verken et konsolprogram eller et Windowsprogram! Det er en metode som tjekker et brugernavn og password. Jeg gik ud fra at du selv kunne finde ud af at lave en form med nogle tekstbokse og knapper!
Avatar billede hawk88 Nybegynder
20. maj 2008 - 13:38 #5
Kan bare ikke lige se hvordan jeg skal forbinde det til et par knapper og tekstbokse.
Avatar billede aaberg Nybegynder
20. maj 2008 - 14:30 #6
Hvis vi nu siger at din database hedder "TestDB", og at du har en TextBox til brugernavn som hedder tboxUserName, og en TextBox til password som hedder tboxPassword, og en Label til fejlbeskeder som hedder lblError. Og så har du sikkert en knap hvorpå der står "Login" som hedder btnLogin.

private void btnLogin_Click(object sender, EventArgs e)
{
  string errormessage;
  string connectionstring = "Data Source=.\SQLEXPRESS;Initial Catalog=TestDB;User Id=" + tboxUserName.Text + ";Password=" + tboxPassword.Text + ";
  if (Connect(out errormessage, connectionstring))
  {
      //Nu er brugeren logget ind, og vi lukker loginformen.
      this.Close();
  }
  else
  }
      //Brugeren har skrevet forkert brugernavn og/eller password, og vi skriver fejlbeskeden ud på lblError
      lblError.Text = errormessage.
  }
}


Data Source=.\SQLEXPRESS;Initial Catalog=TestDB;User Id=myUsername;Password=myPassword;
Avatar billede aaberg Nybegynder
20. maj 2008 - 14:31 #7
Den sidste linje kom med ved en fejltagelse :-)
Avatar billede hawk88 Nybegynder
20. maj 2008 - 15:30 #8
Ser rigtig godt ud, vil lige teste det her senere. Mange tak for hjælpen. Foresten hvor kommer man hen når man er logget ind? Jeg skal helst bare hen til et sted hvor der kommer en skærm frem hvor jeg programmere et sted hvor man kan opdatere tabeller osv.

Prøver lige at give dig nogen point, er ny her, så ved ik helt hvordan det fungerer.
Avatar billede hawk88 Nybegynder
20. maj 2008 - 19:20 #9
Hvis den skal smutte hen til det program jeg har lavet, skal jeg så bare ændrer her?

{
      //Nu er brugeren logget ind, og vi lukker loginformen.
Fx. et eller andet redirect her eller hvordan??
      this.Close();
  }
Avatar billede aaberg Nybegynder
20. maj 2008 - 20:51 #10
du har ret i at det er der du skal gøre noget. Hvis du har en anden form med det funktionalitet du skal bruge, kan du for eksempel bare åbne den.

myForm.Show();
Avatar billede aaberg Nybegynder
20. maj 2008 - 20:53 #11
For at du kan give points, må jeg lige huske at ligge et svar!  ;-)
Avatar billede hawk88 Nybegynder
21. maj 2008 - 09:00 #12
aaberg80 > Har stadig lidt problemer, den ville ikke acceptere den connect:

if (>>Connect<<(out errormessage, connectionstring))

Den der, den siger den ikke eksisterer i den rigtige context. Her er min kode:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace Sebluray
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
       
        private void button1_Click(object sender, EventArgs e)
        {
            string errormessage;
            string connectionstring = "Data Source=LIFEBOOOK\\SQLEXPRESS;Initial Catalog=Sebluray;User Id=" + txtuser.Text + ";Password=" + txtpass.Text + "";
            if (Connect(out errormessage, connectionstring))
            {
                //Nu er brugeren logget ind, og vi lukker loginformen.
                this.Close();
            }
            else
            {
                //Brugeren har skrevet forkert brugernavn og/eller password, og vi skriver fejlbeskeden ud på lblError
                //lblError.Text = "hej";
            }
        }
    }
}
Avatar billede hawk88 Nybegynder
21. maj 2008 - 09:09 #13
Og hvis jeg bruger:

public bool Connect(out string errormessage, string connectionstring)
Og alt det herunder

Så får jeg en masse pga. det empty og error.

Har du msn?
Avatar billede aaberg Nybegynder
21. maj 2008 - 10:20 #14
Jeg har ikke haft Connect metoden inde i Visual Studio, jeg sad og skrev den direkte ind i dette vindue, derfor har jeg lavet et par skrivefejl. Nu kopierte jeg den ind i Visual Studio og rettede fejlene. Her er resultatet:

public bool Connect(out string errormessage, string connectionstring)
{
  try
  {
      errormessage = string.Empty;
      SqlConnection connection = new SqlConnection(connectionstring);
      SqlCommand command = connection.CreateCommand();

      command.CommandText = "select 1";

      if ((int)command.ExecuteScalar() == 1)
        return true;
      else
      {
        errormessage = "Unknown error";
        return false;
      }
  }
  catch (Exception ex)
  {
      errormessage = ex.Message;
      return false;
  }
}

Du skal huske at have en using statement i toppen af vinduet.
using System.Data.SqlClient;

Prøv dette. Med hensyn til msn, så foretrækker jeg at hjælpe dig her :-)
Avatar billede hawk88 Nybegynder
22. maj 2008 - 09:06 #15
Mange tak for hjælpen, det virker.
Avatar billede aaberg Nybegynder
22. maj 2008 - 09:45 #16
Fedt! :-)

Ved du hvordan du accepterer svaret?
Avatar billede aaberg Nybegynder
26. maj 2008 - 20:25 #17
Skal du give nogle points, eller hvad?
Avatar billede hawk88 Nybegynder
26. maj 2008 - 23:07 #18
når jeg trykker accepter sker der intet? Hvordan gør man?
Avatar billede hawk88 Nybegynder
26. maj 2008 - 23:09 #19
Den siger jeg skal markere en bruger, men dit står allerede ved siden af den boks hvor man kan acceptere og når jeg trykker på den, vil den bare have mig til at vælge en bruger igen?
Avatar billede aaberg Nybegynder
27. maj 2008 - 09:42 #20
Jeg giver dig ret i at brugergrænsesnittet er meget dårlig! Du skal trykke på mit navn før du trykker acceptere.
Avatar billede hawk88 Nybegynder
27. maj 2008 - 10:31 #21
Trykker på dit navn og går ned og trykker på accepter bagefter, men den mener stadig jeg ikke har markeret en bruger.

http://peecee.dk/upload/view/116168
Avatar billede aaberg Nybegynder
27. maj 2008 - 13:24 #22
Trykk på navnet som vist på billedet herunder:

http://peecee.dk/upload/view/116190
Avatar billede hawk88 Nybegynder
27. maj 2008 - 13:26 #23
Ah, havde sgu ik opdaget man kunne trykke på den måde. :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester