2016-06-11 12 views
-2

Speicherung Ich bin neu mit ASP.NET und C#. Ich habe versucht, Details einer Buchung in der Buchungstabelle einschließlich Benutzer-ID mit der Sitzung zu speichern. Meine Buchung Tabelle ist alsASP.NET C# Session in DataBase

CREATE TABLE [dbo].[BookingTb] (
[Bid]  INT   IDENTITY (1, 1) NOT NULL, 
[Rid]  VARCHAR (5) NOT NULL, 
[Price]  MONEY  NOT NULL, 
[nights] INT   NOT NULL, 
[NoOfRooms] INT   NOT NULL, 
[Uid] VARCHAR(50) NOT NULL, 
PRIMARY KEY CLUSTERED ([Bid] ASC)); 

folgen und die Tabelle Benutzer folgen, wie

CREATE TABLE [dbo].[UserTb] (
[Uid]  VARCHAR (50) NOT NULL, 
[Uname] VARCHAR (15) NOT NULL, 
[Ubd]  INT   NOT NULL, 
[Ugender] VARCHAR (10) NOT NULL, 
[Uemail] VARCHAR (50) NOT NULL, 
[password] VARCHAR (50) NOT NULL, 
PRIMARY KEY CLUSTERED ([Uid] ASC)); 

i die Sitzung in der Login-Formular erstellt als

Session["Uid"] = TextBox1.Text.ToString(); 

folgen jetzt will ich speichern verschiedene Details in der Buchungstabelle einschließlich der Session nach der Benutzeranmeldung so habe ich den folgenden Code:

using System.Data; 
using System.Data.SqlClient; 
public partial class UserBooking : System.Web.UI.Page 
{ 
    DataClassesDataContext db = new DataClassesDataContext(); 
    protected void Button1_Click(object sender, EventArgs e) 
    { 
     BookingTb b = new BookingTb(); 
     Int32 rooms,nights, cap,price; 
     rooms = Convert.ToInt32(TextBox1.Text); 
     nights = Convert.ToInt32(TextBox2.Text); 
     cap = Convert.ToInt32(DropDownList2.SelectedItem.Value); 
     String type = DropDownList1.SelectedItem.Value; 
     String Rid; 
     String user =Convert.ToString(Session["Uid"]) ; 

     if (type == "Normal" && cap == 2) 
     { 
      Rid = "G01"; 
      price = rooms * nights * 35; 
      b.Rid = Rid; 
      b.Price = price; 
      b.nights = nights; 
      b.Uid = user; 
      b.NoOfRooms = rooms; 
      db.BookingTbs.InsertOnSubmit(b); 
      db.SubmitChanges(); 
      Label3.Text = "Thank you for Booking with us!</br> Total Payment= " + price; 
     } 

das Problem ist, ich diese Fehlermeldung erhalte:

Line 39:b.Uid = user; 
Compiler Error Message: CS0029: Cannot implicitly convert type 'string' to 'int' 

gut, ist Uid ein varchar (50) kein int! Wie kann ich das lösen? Ich habe viele Möglichkeiten ausprobiert, aber keiner von ihnen hat funktioniert.

+0

ist Ihr Problem seines String in der Datenbank beheben –

Antwort

0

In Datenbank Uid werden String geben Sie Ihre Sitzung Wandlungsrecht ist aber

BookingTb b = new BookingTb(); 

in dieser Klasse, die Sie den Benutzer-ID-Typen festgelegt haben auf int, zu dieser Klasse bekam und die Benutzer-ID-Eigenschaft auf Zeichenfolge anstelle von int-Set nach zur Datenbank

+0

tatsächlich ist. Ich habe versucht, es in int zu konvertieren, aber dann wird ein Fehler auftreten, weil die UID Buchstaben enthält. – RAKH

+0

Zeile 27: Int32 user = Convert.ToInt32 (Session [ "uid"]) Ausnahmedetails: System.FormatException: Eingabezeichenfolge war nicht in einem korrekten Format. – RAKH

+0

nicht in int konvertiert nur den Objekttyp in BookingTb Klasse String ändern –