Avatar billede sbjerre Nybegynder
14. januar 2003 - 12:23 Der er 4 kommentarer og
1 løsning

indsætning af data i MS SQL server fejler

Hej

Jeg er ved at lave et program i ASP.NET der benytter en MS SQL server

Når jeg skal indsætte nogle data via nedenstående kode kommer følgende fejlmeddellelsem som jeg ikke fatter en tøddel af:::::::::::::::::

Input string was not in a correct format.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.FormatException: Input string was not in a correct format.

Source Error:


Line 144:Conn.Open();
Line 145:// Insert Data
Line 146:InsertCommand.ExecuteNonQuery();
Line 147:// Close Connection
Line 148:Conn.Close();


:::::::::::::::::::::::::::::::::::::

HER SES KODEN DER SKABER FEJLEN
Og det skal lige siges at jeg har prøvet at køre sql-strengen i SQL servere, så selve SQL koden er der vist ikke noget i vejen med....


:::::::::::::::::::::::::::::::::::::

private void SaveRoomDetails(String RoomID)
{
    String InsertQuery = "Update rooms SET room_name = @Name, room_localno = @Localno, room_max = @Max, room_available = @Available, room_description = @Description where room_id = @RoomID";
    SqlConnection Conn = new SqlConnection("Data Source=localhost;uid=bookinguser;Initial Catalog=IntraBook");               
    SqlCommand InsertCommand = new SqlCommand(InsertQuery, Conn);

    // Add RoomName
    InsertCommand.Parameters.Add(new SqlParameter("@Name", SqlDbType.VarChar, 255));
    InsertCommand.Parameters["@Name"].Value = RoomName.Text.ToString();

    // Add LocalPhoneNo
    InsertCommand.Parameters.Add(new SqlParameter("@Localno", SqlDbType.VarChar, 8));
    InsertCommand.Parameters["@Localno"].Value = RoomNo.Text.ToString();

    // Add Max people
    InsertCommand.Parameters.Add(new SqlParameter("@Max", SqlDbType.Int, 4));
    InsertCommand.Parameters["@Max"].Value = MaxPeople.Text.ToString();

    // Add Room avaiability
    InsertCommand.Parameters.Add(new SqlParameter("@Available", SqlDbType.Bit, 1));
    if(CheckBoxAvailable.Checked == true){InsertCommand.Parameters["@Available"].Value = 1;}
    else {InsertCommand.Parameters["@Available"].Value = 0;}

    // Add Room Description
    InsertCommand.Parameters.Add(new SqlParameter("@Description", SqlDbType.Text, 4000));
    InsertCommand.Parameters["@Description"].Value = RoomDescription.Text.ToString();

    InsertCommand.Parameters.Add(new SqlParameter("@RoomID", SqlDbType.Int, 4));
    InsertCommand.Parameters["@RoomID"].Value = RoomID;

    // Open Connection
    Conn.Open();
    // Insert Data
    InsertCommand.ExecuteNonQuery();
    // Close Connection
    Conn.Close();

    UpdateSavedPanel.Visible = true;
    UpdateLabel.Text = "Informationer om lokale " + RoomName.Text.ToString() + " er opdateret";
}


:::::::::::::::::::::::::::::::::::::::::::::

Håber er nogen der kan hjælpe

Vh Søren
Webmaster :: www.sbonline.dk ::
Avatar billede sbjerre Nybegynder
14. januar 2003 - 12:24 #1
jeg har også forsøgt at køre en simpel SQL select * from sætning, hvilket resulterer i samme fejl....
Avatar billede z42cool Nybegynder
14. januar 2003 - 14:05 #2
InsertCommand.Parameters.Add(new SqlParameter("@RoomID", SqlDbType.Int, 4));
InsertCommand.Parameters["@RoomID"].Value = RoomID;

skal være

InsertCommand.Parameters.Add(new SqlParameter("@RoomID", SqlDbType.Int, 4));
InsertCommand.Parameters["@RoomID"].Value = Int32.Parse(RoomID);

Da du jo angiver RoomID som strinf i din funktions parameter liste, men som SqlDbType.Int i din sql parameter.
Avatar billede z42cool Nybegynder
14. januar 2003 - 14:06 #3
Du kan self. også bare sige

private void SaveRoomDetails(int RoomID)
Avatar billede sbjerre Nybegynder
14. januar 2003 - 14:13 #4
Det har du fuldstændigt ret i, men det løste ikke problemet...
Til gengæld prøvede jeg noget andet.
Jeg rettede følgende i koden for at se hvilket SQLstreng der sendes af sted:

            // Open Connection
            Conn.Open();
            // Insert Data
            Response.Write(InsertQuery);
            //myInsertCommand.ExecuteNonQuery();
            // Close Connection
            Conn.Close();

Det lader til at parameterværdierne ikke sættes ind....

resultatet af sql strengen blev:

UPDATE rooms SET room_name = '@Name', room_localno = @Localno, room_max = @Max, room_available = @Available, room_description = '@Description'

Jeg har sågar prøvet at skrive en sql streng direkte:

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.
private void SaveRoomDetails(String RoomID)
{
    String InsertQuery = "UPDATE rooms SET room_name = 'A 306', room_localno = 1234, room_max = 5, room_available = 1, room_description = 'bla bla'";
    SqlConnection Conn = new SqlConnection("Data Source=localhost;uid=bookinguser;Initial Catalog=IntraBook");               
    SqlCommand myInsertCommand = new SqlCommand(InsertQuery);
    myInsertCommand.Connection = Conn;

    // Open Connection
    Conn.Open();
    // Insert Data
    Response.Write(InsertQuery);
    myInsertCommand.ExecuteNonQuery();
    // Close Connection
    Conn.Close();


}

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Dette funger heller ikke....
Avatar billede z42cool Nybegynder
14. januar 2003 - 14:22 #5
1) Kan du eksekvere denne sql streng direkte i MSSQL?

"UPDATE rooms SET room_name = 'A 306', room_localno = 1234, room_max = 5, room_available = 1, room_description = 'bla bla'"

2) Hvis ja til 1 - hvilken fejl giver dit sidste eksempel?
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