[C#]Code laten stoppen

Pagina: 1
Acties:

  • Kyoshi
  • Registratie: December 2006
  • Laatst online: 30-11 15:34
Ik zit met het volgende;

Ik heb een inlogsysteem gemaakt waarbij er via een MS SQL Database eventueel user accounts verwijderen kunnen worden. Als vanuit de datasource (de database zelf) Administrator wordt geselecteerd in het dropdownmenu de opdracht dan afgebroken wordt. Hoe geef ik aan dat als hij voldoet aan if dat hij stopt met uitvoeren? Ik heb een tijd zitten zoeken en kan het gewoon iet vinden, of ik heb moeite om het goed te formuleren.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
        // Variabelen
        string username = dropdown_username.SelectedValue;
        string connection = @"Data Source=SERVER\SQLEXPRESS;Initial Catalog=DSG;Integrated Security=True";
        string sql_query = "DELETE FROM tbl_login WHERE username = '" + username + "'";
        string sql_query2 = "SELECT * FROM tbl_login WHERE username = '" + username + "'";
        
        SqlConnection sqlconn = new SqlConnection(connection);
        SqlCommand sqlcmd = new SqlCommand(sql_query, sqlconn);
        SqlCommand sqlcmd2 = new SqlCommand(sql_query2, sqlconn);

        if (dropdown_username.SelectedValue == "Administrator")
        {
            lbl_message_del.Text = "You cannot delete the Administrator.";
        }
        sqlconn.Open();
        SqlDataReader deleter = sqlcmd.ExecuteReader();
        sqlconn.Close();

        sqlconn.Open();
        SqlDataReader selectcheck = sqlcmd2.ExecuteReader();
        if (selectcheck.HasRows == false)
        {
            lbl_message_del.Text = "User" + dropdown_username.SelectedValue + "deleted.";
        }
        else
        {
            lbl_message_del.Text = "Mislukt";
        }
        sqlconn.Close();

  • Kickasz
  • Registratie: April 2003
  • Niet online
Het is misschien handiger dat je Administrator helemaal niet kan selecteren om te verwijderen?

  • Sikkek
  • Registratie: Maart 2004
  • Laatst online: 19:00
Wat dacht je van:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
        // Variabelen
        string username = dropdown_username.SelectedValue;
        string connection = @"Data Source=SERVER\SQLEXPRESS;Initial Catalog=DSG;Integrated Security=True";
        string sql_query = "DELETE FROM tbl_login WHERE username = '" + username + "'";
        string sql_query2 = "SELECT * FROM tbl_login WHERE username = '" + username + "'";
        
        SqlConnection sqlconn = new SqlConnection(connection);
        SqlCommand sqlcmd = new SqlCommand(sql_query, sqlconn);
        SqlCommand sqlcmd2 = new SqlCommand(sql_query2, sqlconn);

        if (dropdown_username.SelectedValue == "Administrator")
        {
            lbl_message_del.Text = "You cannot delete the Administrator.";
        }
        else
        {
        sqlconn.Open();
        SqlDataReader deleter = sqlcmd.ExecuteReader();
        sqlconn.Close();

        sqlconn.Open();
        SqlDataReader selectcheck = sqlcmd2.ExecuteReader();
        if (selectcheck.HasRows == false)
        {
            lbl_message_del.Text = "User" + dropdown_username.SelectedValue + "deleted.";
        }
        else
        {
            lbl_message_del.Text = "Mislukt";
        }
        sqlconn.Close();
       }


Lijkt me redelijk basis kennis, wellicht eens een goed boek over C# lezen?

  • Kyoshi
  • Registratie: December 2006
  • Laatst online: 30-11 15:34
Administrator moet toch ergens staan, hij is ten slotte ook in een user in tbl_login. Het zou eventueel wel anders kunnen bedenk ik me nu, als ik:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
if //(not?)// (dropdown_username.SelectedValue == "Administrator")

{
              sqlconn.Open();
        SqlDataReader deleter = sqlcmd.ExecuteReader();
        sqlconn.Close();

        sqlconn.Open();
        SqlDataReader selectcheck = sqlcmd2.ExecuteReader();
        if (selectcheck.HasRows == false)
        {
            lbl_message_del.Text = "User" + dropdown_username.SelectedValue + "deleted.";
        }
        else
        {
            lbl_message_del.Text = "Mislukt";
        }
        sqlconn.Close();
}

  • ThunderNet
  • Registratie: Juni 2004
  • Laatst online: 15:50

ThunderNet

Flits!

Zou je misschien in je query kunnen doen?

ala
string sql_query = "DELETE FROM tbl_login WHERE username = '" + username
AND WHERE username is NOT administrator?

(heb mn sql boek niet naast me liggen)

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
        OdbcCommand myCom = new OdbcCommand("INSERT INTO reacties (nieuwspost_id, date, name, email, content, visible, ip) VALUES (?, ?, ?, ?, ?, ?, ?)", myCon);


        
        myCom.Parameters.Add("@nieuwspost_id", OdbcType.Int).Value = Convert.ToInt32(TextBox4.Text);
        myCom.Parameters.Add("@date", OdbcType.Date).Value = DateTime.Now.ToString();
        myCom.Parameters.Add("@name", OdbcType.Text).Value = Server.HtmlDecode(TextBox1.Text);
        myCom.Parameters.Add("@email", OdbcType.Text).Value = Server.HtmlDecode(TextBox2.Text);
        myCom.Parameters.Add("@content", OdbcType.Text).Value = Server.HtmlDecode(TextBox3.Text);
        myCom.Parameters.Add("@visible", OdbcType.Bit).Value = 1;
        myCom.Parameters.Add("@ip", OdbcType.Text).Value = Page.Request.UserHostAddress;
        
        myCon.Open();
        
        myCom.ExecuteNonQuery();
        myCon.Close();


Op deze manier voorkom je direct sql injection :)

Heb je liever vooraf, of achteraf, dat ik zeg dat ik geen flauw idee heb wat ik doe?


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Code "Stoppen" kan op verschillende manieren
C#:
1
2
3
4
5
6
7
8
// #1
return;

// #2
throw new ApplicationException("Mag Administrator niet verwijderen");

// #3
Application.Exit();

Welke manier je precies wilt gebruiken is afhankelijk van waarom je je code af wilt breken en hoe.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • whoami
  • Registratie: December 2000
  • Laatst online: 21:20
Maw, je wil gewoon voorkomen dat iemand het administrator account delete ?
Waarom dan gewoon niet checken of administrator al dan niet geselecteerd is, en indien dit geval is, een error gevenn ? Gewoon, een ifje ?
code:
1
2
3
4
5
6
7
8
if( selectedItem == "Administrator" )
{
    Messagebox.show ("admin kan niet verwijderd worden");
}
else
{
    // delete
}
Hetgeen Sikkek dus ook ook zegt ...

https://fgheysels.github.io/


  • Kyoshi
  • Registratie: December 2006
  • Laatst online: 30-11 15:34
Hartstikke bedankt voor jullie hulp, ik heb er ook nog andere dingen uit kunnen halen die ik ook nog wilde weten. =) Een C# boek is denk ik ook niet verkeerd, kunnen jullie een goede aanraden? Dan met de nadruk op webapplicaties en wat minder windowsapplications.

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”

Pagina: 1