0
id = 1を入力すると、id = 1のすべての人の名前が返されます。そのIDはタイプstring
のリストにあります。私は次のことを試しましたが、何らかの理由でリストが常にnullを返し、結果がリストに格納されない理由を見つけることができません。c#asp.netのSQL Serverストアドプロシージャから複数の行を返す?
私の間違いを理解するのを助けてください。これはこれまで私が試したことです。次の行にエラーが表示され、なぜエラーが続くのか理解できません。
fname = rdr["Fullname"].ToString;
names.add(fname);
SQL Serverコード:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[login_users]
(@uname NVARCHAR(50), @pass NVARCHAR(50))
AS
BEGIN
SET NOCOUNT ON;
SELECT UserName, Password, Fullname
FROM dbo.users
WHERE UserName = @uname AND [Password] = @pass
END
C#コード:
protected void LogIn_Click(object sender, EventArgs e)
{
establishconnection();
String username = usernamelogin.Text;
String password = passwordlogin.Text;
String fname = null;
List<String> names;
establishconnection();
try
{
cnn.Open();
SqlCommand cmd = new SqlCommand("dbo.login_users", cnn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@uname", username));
cmd.Parameters.Add(new SqlParameter("@pass", password));
using (SqlDataReader rdr = cmd.ExecuteReader())
{
// iterate through results, printing each to console
while (rdr.Read())
{
fname = rdr["Fullname"].ToString;
names.add(fname);
}
}
cnn.Close();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
NVARCHARとして @uname(50)= ' ' NVARCHARとして @pass(50)='' ストアprocedure' 'でこの宣言ミスを試します –