首页 > 解决方案 > SqlException 未被用户代码处理,关键字事务附近的语法不正确

问题描述

using System;
using System.Collections.Generic;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;

/// <summary>
/// Summary description for Transaction
/// </summary>
public class Transaction
{
    private string connStr = ConfigurationManager.ConnectionStrings["airmazin"].ConnectionString;
    private string _TransactionID;
    private string _OfferId;
    private string _UserName;
    private string _Image;
    private string _ProductName;
    private decimal _ProductPrice;

    public Transaction()
    {
        this.TransactionID = null;
        this.OfferId = null;
        this.UserName = null;
        this.Image = null;
        this.ProductName = null;
        this.ProductPrice = 0;
        //
        // TODO: Add constructor logic here
        //
    }

    public Transaction(string p_TransactionID, string p_OfferId, string p_UserName, string p_Image, string p_ProductName, decimal p_ProductPrice)
    {
        this.TransactionID = p_TransactionID;
        this.OfferId = p_OfferId;
        this.UserName = p_UserName;
        this.Image = p_Image;
        this.ProductName = p_ProductName;
        this.ProductPrice = p_ProductPrice;
    }

    private string TransactionID
    {
        get { return _TransactionID; }
        set { _TransactionID = value; }
    }
    private string OfferId
    {
        get { return _OfferId; }
        set { _OfferId = value; }
    }
    private string UserName
    {
        get { return _UserName; }
        set { _UserName = value; }
    }
    private string Image
    {
        get { return _Image; }
        set { _Image = value; }
    }
    private string ProductName
    {
        get { return _TransactionID; }
        set { _ProductName = value; }
    }
    private decimal ProductPrice
    {
        get { return _ProductPrice; }
        set { _ProductPrice = value; }
    }  //getter and setter
    public Transaction getProductTransaction(string p_UserName)
    {
        Transaction prodDetail = null;
        string tran_ID, offer_ID, user, Prod_Image, prod_Name;
        decimal prod_Price;
        SqlConnection conn = new SqlConnection(connStr);
        string queryStr = "SELECT * FROM Transaction WHERE UserName = @user";
       // think the naming convention is wrong 
        SqlCommand cmd = new SqlCommand(queryStr, conn);
        cmd.Parameters.AddWithValue("@user", p_UserName);
        conn.Open();
        SqlDataReader dr = cmd.ExecuteReader();
        if (dr.Read())
        {
            tran_ID = dr["TransactionID"].ToString();
            offer_ID = dr["OfferId"].ToString();
            user = dr["UserName"].ToString();
            Prod_Image = dr["Image"].ToString();
            prod_Name = dr["ProductName"].ToString();
            prod_Price = decimal.Parse(dr["ProductPrice"].ToString());
            prodDetail = new Transaction(tran_ID, offer_ID, user, Prod_Image, prod_Name, prod_Price);
        }
        else
        {
            prodDetail = null;
        }
        conn.Close();
        dr.Close();
        dr.Dispose();
        return prodDetail;

    }

不太确定sql。刚开始编程,目前是学生。遇到了这个错误,显示在关键字交易附近。命名约定可能是错误的,可能需要一些帮助。想在 aspx 页面上显示交易历史,所以我正在执行 getProductTransaction(){} 方法,但它似乎有问题

编辑(来自评论)

现在我希望它显示交易列表而不是单个交易

标签: c#sql-server

解决方案


由于表名“事务”是关键字,可能会出现问题。你可以试试这个作为查询:

string queryStr = "SELECT * FROM [Transaction] WHERE UserName = @user";

推荐阅读