簡體   English   中英

1000 之后的增量值沒有自動增量 SQL

[英]Increment value after 1000 without auto increment SQL

我想相對於 1000 增加User_ID 。當用戶進入系統時,它會計算它。 但是我不想使用身份增量,因為我已經進行了 ID 身份增量。 我這樣做只是為了能夠隨時在備份中更改它。 我在 SQL Server 中創建了第一個用戶。 ID 為 1000。

這是我的代碼:

string query1 = "ALTER TABLE UserInfo WHERE User_ID ORDER BY User_ID ASC SET IDENTITY_CACHE=ON";

int i;           

cmd = new SqlCommand(query1);
conn.Open();

// I get an error here: "Connection property has not been initialized."
i = Convert.ToInt32(cmd.ExecuteScalar()) + 1; 
conn.Close(); 

// "ALTER TABLE UserInfo WHERE User_ID ORDER BY User_ID ASC
string query = "INSERT INTO UserInfo(User_ID, Name, Surname, Birth_Date, Reg_Date) VALUES (@User_ID, @Name, @Surname, @Birth_Date, @Reg_Date)";
cmd = new SqlCommand(query, conn);

cmd.Parameters.AddWithValue("@User_ID", i);
cmd.Parameters.AddWithValue("@Name", TextBox1.Text);
cmd.Parameters.AddWithValue("@Surname", TextBox2.Text);
cmd.Parameters.AddWithValue("@Birth_Date", TextBox3.Text);
cmd.Parameters.AddWithValue("@Reg_Date", DateTime.Now.ToString());

conn.Open();
cmd.ExecuteNonQuery();
conn.Close();

編輯的部分是:

string query1 = "SELECT User_ID FROM UserInfo ORDER BY User_ID DESC"; //User_ID 相對於 1000 再增加 1

            cmd = new SqlCommand(query1, conn);

        
            conn.Open();
        int i = Convert.ToInt32(cmd.ExecuteScalar());
        i = i + 1;
            conn.Close();

有用

您的錯誤描述與您的問題標題或描述不符。 你應該解決這個問題。

問題的原因:話雖如此, SqlCommand確實需要連接,而您從未將連接分配給命令。

建議的解決方案:最簡單的方法是使用還需要連接SqlCommand(cmdText, connection) 文檔的構造函數。

cmd = new SqlCommand(query1, conn);

與你的問題無關,但它可能會咬你的屁股或稍后,你應該知道/考慮的幾件事:

  1. ALTER TABLE語句不允許使用WHERE子句,請查看TSQL ALTER TABLE 文檔 @KekuSemau 在問題評論中已經提到了這一點。

  2. SqlConnection確實實現了IDisposable並且您的代碼不調用Dispose()也不使用using 語句 我建議使用using語句。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM