我有一个返回String数据类型的C#函数。我想将一个json对象作为字符串返回,但是我收到了这个错误:CS1002 :;预期 这是功能:
public String LoginUser(string Username, string Password)
{
string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
SqlConnection con = new SqlConnection(constr);
try
{
SqlCommand cmd = new SqlCommand("Login_User");
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@Username", Username);
cmd.Parameters.AddWithValue("@Password", Password);
cmd.Connection = con;
if (con.State == ConnectionState.Closed)
{
con.Open();
}
SqlDataReader rd = cmd.ExecuteReader();
if (rd.HasRows)
{
rd.Read();
return "{"message": "Successfully"}"; //me sukses
}
else
return "{"message": "Invalid Username and/or Password"}"; //pas sukses
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (con.State != ConnectionState.Closed)
{
con.Close();
}
}
}
答案 0 :(得分:0)
据我所知,在两个字符串中都需要escape "
character;
return "{\"message\": \"Successfully\"}"; //me sukses
和
return "{\"message\": \"Invalid Username and/or Password\"}";
或者使用逐字字符串文字加倍;
return @"{""message"": ""Invalid Username and/or Password""}";
和
return "{""message"": ""Invalid Username and/or Password""}";
使用using
statement自动处理您的连接,命令和阅读器,而不是手动调用Close
或Dispose
方法。
不要使用AddWithValue
方法。 It may generate unexpected and surprising results sometimes。使用Add
方法重载来指定参数类型及其大小。
我强烈怀疑你将密码保存为plaint文本的方式。 不要这样做。阅读Best way to store password in database
答案 1 :(得分:0)
在字符串前使用@
可轻松转义双引号。
return @"{"message": "Invalid Username and/or Password"}";
尝试更改:
catch (Exception ex)
{
throw ex; // don't do this
}
致:
catch (SqlException ex)
{
return string.Format("error: {0}", ex.message);
}