Michel Boon Ответов: 1

Кнопка Sql insert не работает


Привет,
У меня есть внутренняя страница, которую нужно было воссоздать, потому что старая была устаревшей, поэтому я перестраиваю страницу с нуля.
 
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <asp:Image ID="Image1" runat="server" ImageUrl="~/images/jubels_logo_vlakje_magenta.png" style="margin-left: 0px" />
    <form id="form1" runat="server">
    <div style="margin-left: 80px">
        <asp:Label ID="Label1" runat="server" Text="Ingevoerd Door :"></asp:Label>
                          
        <asp:TextBox ID="TextBox1" runat="server" ReadOnly="True"></asp:TextBox>
        <br />
        <asp:Label ID="Label2" runat="server" Text="Bedrijfsnaam :"></asp:Label>
                                   
       <asp:TextBox ID="TextBox17" runat="server"></asp:TextBox>
        <br />
        <asp:Label ID="Label3" runat="server" Text="Branche"></asp:Label>
                                        
        <asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="SqlDataSource1" DataTextField="BRANCHE" DataValueField="BRANCHE">
        </asp:DropDownList>
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:FUP-DataConnectionString %>" SelectCommand="SELECT [BRANCHE] FROM [Branches]"></asp:SqlDataSource>
        <br />
        <asp:Label ID="Label4" runat="server" Text="Geslacht"></asp:Label>
                                       <asp:RadioButtonList ID="RadioButtonList1" runat="server" RepeatDirection="Horizontal" RepeatLayout="Flow">
            <asp:ListItem Value="M">Man</asp:ListItem>
            <asp:ListItem Value="V">Vrouw</asp:ListItem>
        </asp:RadioButtonList>
 <br />
        <asp:Label ID="Label5" runat="server" Text="Voorletters "></asp:Label>
                                   
        <asp:TextBox ID="TextBox5" runat="server"></asp:TextBox>
        <br />
        <asp:Label ID="Label6" runat="server" Text="Voornaam "></asp:Label>
                                
        <asp:TextBox ID="TextBox6" runat="server"></asp:TextBox>
        <br />
        <asp:Label ID="Label7" runat="server" Text="Tussenvoegsel"></asp:Label>
                               
        <asp:TextBox ID="TextBox7" runat="server"></asp:TextBox>
        <br />
        <asp:Label ID="Label8" runat="server" Text="Achternaam "></asp:Label>
                                 
        <asp:TextBox ID="TextBox8" runat="server"></asp:TextBox>
        <br />
        <asp:Label ID="Label9" runat="server" Text="Functie"></asp:Label>
                                         
        <asp:TextBox ID="TextBox9" runat="server"></asp:TextBox>
        <br />
        <br />
        <asp:Label ID="Label10" runat="server" Text="Straat - huisnummer"></asp:Label>
                       <asp:TextBox ID="TextBox11" runat="server"></asp:TextBox>
          
        <asp:TextBox ID="TextBox10" runat="server" Width="16px"></asp:TextBox>
        <br />
        <asp:Label ID="Label11" runat="server" Text="Postcode - plaats"></asp:Label>
                          
        <asp:TextBox ID="TextBox12" runat="server" Width="41px"></asp:TextBox>
 <asp:TextBox ID="TextBox13" runat="server"></asp:TextBox>
        <br />
        <br />
        <asp:Label ID="Label12" runat="server" Text="Telefoon"></asp:Label>
                                       
        <asp:TextBox ID="TextBox14" runat="server"></asp:TextBox>
        <br />
        <asp:Label ID="Label13" runat="server" Text="Mobiel"></asp:Label>
                                          
        <asp:TextBox ID="TextBox15" runat="server">06</asp:TextBox>
        <br />
        <asp:Label ID="Label14" runat="server" Text="Email"></asp:Label>
                                    
        <asp:TextBox ID="TextBox16" runat="server"></asp:TextBox>
      
        <br />
        <br />
        <asp:Label ID="Label15" runat="server" Text="Brieftext"></asp:Label>                                <asp:RadioButtonList ID="RadioButtonList3" runat="server" RepeatDirection="Horizontal" RepeatLayout="Flow" style="margin-bottom: 0px">
            <asp:ListItem>Normaal</asp:ListItem>
            <asp:ListItem>EX-Klanten/Propects</asp:ListItem>
            <asp:ListItem>Vormgever</asp:ListItem>
            <asp:ListItem>Fotograaf</asp:ListItem>
        </asp:RadioButtonList>

       <br />
        <asp:Label ID="Label17" runat="server" Text="Ondertekening"></asp:Label>
                     <asp:RadioButtonList ID="RadioButtonList4" runat="server" RepeatDirection="Horizontal" RepeatLayout="Flow">
            <asp:ListItem>Fred</asp:ListItem>
            <asp:ListItem>Jeroen</asp:ListItem>
            <asp:ListItem>Fons</asp:ListItem>
        </asp:RadioButtonList>

       
        <br />
       
        <asp:Button ID="Button1" runat="server" Text="Check Database op bestaand record" OnClick="Button1_Click" /><asp:Button ID="Button2" runat="server" Text="Voeg toe aan Database" OnClick="Button2_Click" />
        <br />
        <br />
        <asp:Label ID="Label16" runat="server" Text=""></asp:Label>

     <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:FUP-DataConnectionString %>" SelectCommand="SELECT [id], [username] FROM [users]"></asp:SqlDataSource>
        <br />
    </div>
    </form>
</body>
</html>


Что я уже пробовал:

Я попытался использовать select * from data, где все значения, которые должны быть помещены в al объявлены.
И попробовал вот так
protected void Button2_Click(object sender, EventArgs e)
    {

        string connString = ConfigurationManager.ConnectionStrings["FUP-DataConnectionString"].ConnectionString;
        SqlConnection conn = null;
        try
        {
            SqlCommand cmd = new SqlCommand("sp_insert", con);
            cmd.CommandType = CommandType.Text;
            cmd.Parameters.AddWithValue("@BEDRIJF", TextBox17.Text);
            cmd.Parameters.AddWithValue("@VOORNAAM", TextBox6.Text);
            cmd.Parameters.AddWithValue("@ACHTERNAAM", TextBox8.Text);

            con.Open();
            int i = cmd.ExecuteNonQuery();


            con.Close();

            if (i != 1)
            {
                Label16.Text = ("Data Saved");

                Response.Redirect("Default2.aspx");
            }
            else
            {
                Label16.Text = ("Data Not Saved");

                Response.Redirect("Default2.aspx");
            }
        }
            catch (Exception ex)
            {
                //log error 
               //display friendly error to user
            }
            finally
            {
                if (conn != null)
                {
                    //cleanup connection i.e close 
                }
        }
    
    }
}


Но в обоих случаях кнопка делает это,nt вставляет данные в базу данных.

Наиболее идеальным должно быть то, что если данные уже существуют, то команда может обновлять данные вместо того, чтобы отбрасывать ошибки назад.

1 Ответов

Рейтинг:
2

Jochen Arndt

if (i != 1)
{
    Label16.Text = ("Data Saved");
     
    Response.Redirect("Default2.aspx");
}
Разве так не должно быть if (i == 1)?

Если это не проблема, вы должны показать нам, как это сделать "sp_insert" определяемый. Судя по названию, я бы предположил, что это INSERT команда, где обычно предоставляются все поля, в то время как параметры, заданные в вашем коде, указывают на то, что вы хотите выполнить команду. UPDATE команда.


Michel Boon

== Возвращает invailifd expresion trem =
sp_inster был из неработающей хранимой процедуры, которая была объявлена ранее.
уже изменил его обратно SqlCommand cmd = new SqlCommand("select *from DATA", conn);
Но это не будет работать эфира

Jochen Arndt

Оператор SELECT не будет ни обновляться, ни вставляться.

ExecuteNonQuery() возвращает количество затронутых строк для обновления и вставки, которое равно >= 1 для успешного выполнения.
Также обратите внимание, как функция называется: "запросами". Чтобы выполнить запрос SELECT, используйте ExecuteReader() или ExecuteScalar().

Michel Boon

Когда я использую упомянутые параметры выполнения
int i = cmd.ExecuteScalar(); или int i = cmd.ExecuteReader(); он возвращает ошибку cant явно преобразовать в int.

Я могу программировать, но SQL-это не моя работа erea в программировании, я просто не использую его гораздо больше как front end builder, чем backend.

Jochen Arndt

Если вы умеете программировать, то должны знать, что обычно перед использованием функции, которая до сих пор не использовалась, читается документация.
И здесь ошибка тоже вполне понятна:
Эти функции не возвращали int.

Вы также должны сначала прочитать об основах баз данных SQL и общих командах, таких как SELECT, UPDATE, INSERT и DELETE.

До сих пор неясно, что Вы, наконец, хотите сделать. В зависимости от этого вы должны создать команду SQL, указать параметры и использовать соответствующую функцию SqlCommand для выполнения команды.

Michel Boon

Общие команды SQL я знаю, что они были у меня в моем образовании, я также знаю, что SQL расшифровывается как Structerd Query Language.
Я не пошел дальше этого, используя базовую базу данных singel table с не более чем 4 colmns.

Эта база данных, как я показал, намного больше, чем та.