【问题标题】:ASP.NET C# storing Session in DataBase [closed]ASP.NET C#在数据库中存储会话[关闭]
【发布时间】:2016-06-11 20:02:28
【问题描述】:

我是 ASP.NET 和 C# 的新手。我试图将预订的详细信息存储到预订表中,包括使用会话的用户 ID。 我的预订表如下

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));

用户表如下

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));

我在登录表单中创建了会话,如下所示

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

现在我想在 Booking 表中存储不同的详细信息,包括用户登录后的会话,所以我使用了以下代码:

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;
        }

问题是我不断收到此错误:

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

好吧,Uid 是 varchar(50) 而不是 int!我该如何解决?我尝试了很多方法,但都没有奏效。

【问题讨论】:

  • 你的问题解决了吗

标签: c# mysql asp.net session


【解决方案1】:

在数据库中 Uid 是字符串类型,你的会话转换是正确的,但是

 BookingTb b = new BookingTb();

在此类中,您已将 UId 类型设置为 int ,进入此类并根据数据库将 Uid 属性设置为 string 而不是 int

【讨论】:

  • 实际上是它在数据库中的字符串。我尝试将其转换为 int 但随后会出现错误,因为 Uid 包含字母。
  • 第 27 行:Int32 user =Convert.ToInt32(Session["Uid"]) 异常详细信息:System.FormatException:输入字符串格式不正确。
  • 不要转换成 int 只是在 BookingTb 类中将属性类型更改为字符串
  • 你在哪里声明这个类???/
  • 我只在这里声明:BookingTb b = new BookingTb();
猜你喜欢
  • 2011-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多