簡體   English   中英

C#和SQL:選擇一行,將列數據獲取到變量

[英]C# and SQL: Selecting a row, a get a column data to a variable

所以基本上我有一個SQL Server。 我有4列。 我將在此處設計此表:

   varchar varchar  int    varchar
    account password gmlevel pics
    test    test           3  url

首先,我的方法檢查輸入的帳戶和密碼是否相等(登錄查詢)。

然后,我想檢查“測試”帳戶對此具有高訪問權限(gmlevel),然后將其保存到變量中。

它需要是兩個查詢。 但是gmlevel記錄對我的程序來說非常重要,並且根本不起作用。

這是我的聯系:

private void gmset () 
    {
        if (loggedin == true) {
            try
        {
            using (var con2 = new SqlConnection())
            {
                string user = login.felhasz;
                string query2 = "SELECT * FROM accounts WHERE account=@acc";

                con2.ConnectionString = "connection string";
                con2.Open();
                var cm2 = new SqlCommand(query2, con2);
                cm2.Parameters.AddWithValue("@acc", user);

                SqlDataReader dr2 = cm2.ExecuteReader();
                while (dr2.HasRows)
                {
                    MessageBox.Show("ASD");
                }

            }

        }

        catch (Exception exe) 
        {
            MessageBox.Show(exe.Message);
        }
        }
       else {
      MessageBox.Show("Failed!");
      }

該代碼不包含任何可用於獲取GMLevel的內容。 我已經嘗試了很多事情,但是一天前我一直在尋找答案,但仍然沒有。

/對不起,我想問更多問題,但我越來越接近解決方案

您可以調用Read()方法來獲取gmlevel。

嘗試這個:

 int GameLevel;
 while (dr2.Read())
 {
    int.TryParse(dr2["gmlevel"].ToString(),out GameLevel);
    MessageBox.Show("ASD");
 }

編輯:我懷疑控件未進入while循環。

試試看:用以下if-else塊替換/注釋您的while循環,然后查看結果

 if(dr2.Read())
 {
  MessageBox.Show("Record Found");        
 }
 else
 {
  MessageBox.Show("Record Not Found!!!");        
 }
while (dr2.HasRows) 
{
  Object[] output = new Object[dr2.FieldCount];
  dr2.GetValues(output);

  MessageBox.Show(output[2].ToString());
}

暫無
暫無

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

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