【问题标题】:How to add arithmetic operator in SQL reader in C#如何在 C# 的 SQL 阅读器中添加算术运算符
【发布时间】:2013-12-27 09:11:12
【问题描述】:

我从 SQL Server 表中选择了一个数据。我可以知道如何在 C# 中添加算术运算符吗?

例如,如果从表中选择TransID是14491,那么如果写入算术加法运算符条件。那么transID的数字会加1。预期结果是14492

protected void TransID()
{
    string UniIDSQL = "SELECT ISNULL(MAX(CAST(INV_TRANS_ID AS INT)),0) AS TRANSID FROM  CIMProRPT01.dbo.OTH_INV_TRANSACTION";
    using (SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["CIMProRPT01ConnectionString"].ConnectionString))
    {
        using (SqlCommand cmd = new SqlCommand(UniIDSQL, con))
        {
            SqlDataReader reader;
            try
            {
                con.Open();
                reader = cmd.ExecuteReader();
                if (reader.HasRows)
                {
                    reader.Read();
                    MMSNewID.Text = reader["TRANSID"].ToString();
                    reader.Close();
                }
            }
            catch (Exception err)
            {
                lblResults.Text = "Error getting Unique ID ";
                lblResults.Text += err.Message;
            }
            con.Close();
        }
    }
}

【问题讨论】:

    标签: c# asp.net sql sql-server stored-procedures


    【解决方案1】:
    string UniIDSQL = "SELECT ISNULL(MAX(CAST(INV_TRANS_ID AS INT)),0) + 1 AS TRANSID FROM  CIMProRPT01.dbo.OTH_INV_TRANSACTION";
    

    请注意,当在两个线程中同时执行时(例如在两个并发的 asp.net 请求中),TransID 将返回相同(非唯一)的值。您应该使用带有标识列的表、uniqueidentifiers 而不是 int 或 sql server 序列来获取唯一值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-10
      • 1970-01-01
      相关资源
      最近更新 更多