簡體   English   中英

似乎無法讓DataReader在C#/ SQL Server中工作

[英]Can't seem to get a DataReader to work in C# / SQL Server

我有以下代碼:

string strConnect = "Server=DESKTOP-2Q73COU\\SQLEXPRESS;Database=LoginApp;Trusted_Connection=True;";
SqlConnection conn = new SqlConnection(strConnect);
conn.Open();

MessageBox.Show("Connected to SSMS.");

string loadMainInfo = "SELECT * FROM Main_Information WHERE Username = " + Globals.username;

SqlCommand cmd = new SqlCommand(loadMainInfo, conn);

SqlDataReader dr = cmd.ExecuteReader();

if (dr.Read())
{
    lblStanding.Text = (dr["Standing"].ToString());
    lblName.Text = (dr["First Name"].ToString()) + " " + (dr["Last Name"].ToString());
    lblTotalHours.Text = (dr["Total_hours"].ToString());
    lblType.Text = (dr["Degree_type"].ToString());
    lblDegree.Text = (dr["Degree"].ToString());
    lblCurrentHours.Text = (dr["Current_hours"].ToString());
}

具體來說這行:

string loadMainInfo = "SELECT * FROM Main_Information WHERE Username = " + Globals.username;

如果我將該行的結尾替換為:

Username = testuser"

該代碼將正常工作,並且下面的所有標簽都將使用表中Username = testuser的相應信息填充。 但是,如果用戶使用其用戶名登錄並且代碼使用的是原始行,則會出現此錯誤:

System.Data.SqlClient.SqlException:''='附近的語法不正確。

有什么幫助嗎?

使用SqlParameter做到這一點:

string loadMainInfo = "SELECT * FROM Main_Information WHERE Username = @paramName"'; 
SqlParameter param1 = new SqlParameter () ; 
param1.ParameterName="@paramName";
param1.SqlDbType= SqlDbType.Varchar;
param1.Value= Globals.username;
cmd.Parameters.Add(param1);

您輸入的查詢有誤,請在此添加引號

string loadMainInfo = "SELECT * FROM Main_Information WHERE Username = '" + Globals.username + "'";

您可以使用String.Format

string loadMainInfo = String.Format(“SELECT * FROM Main_Information WHERE Username = {0}" ,Globals.username);

當您為查詢字符串引用它時,看起來Globals.username可能沒有值,因為當查詢中的=后沒有任何內容時,就會出現SQL錯誤。

我建議在設置好之后,使用調試器查看loadMainInfo的值(或者在下面添加MessageBox.Show(loadMainInfo);行)。

查詢字符串是否包含您期望的用戶名值?

暫無
暫無

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

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