[英]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.