问题
public UserInfo GetUserCredentials(string usernameParameter, string passwordParameter)
{
UserInfo getInfo = new UserInfo()
try
{
accessToDatabase.OpeningDatabase()
String query = "SELECT * FROM Users where Username=@Username AND Password=@Password"
SqlCommand sqlCmd = accessToDatabase.Command(query)
sqlCmd.CommandType = CommandType.Text
sqlCmd.Parameters.AddWithValue("@Username", usernameParameter)
sqlCmd.Parameters.AddWithValue("@Password", passwordParameter)
SqlDataReader oReader = sqlCmd.ExecuteReader()
byte[] pictureIdByte
Image pictureIdImg = null
while (oReader.Read())
{
getInfo.Username = oReader["Username"].ToString()
getInfo.Password = oReader["Password"].ToString()
getInfo.Role = oReader["Role"].ToString()
getInfo.Firstname = oReader["Firstname"].ToString()
getInfo.Lastname = oReader["Lastname"].ToString()
getInfo.Status = Convert.ToInt32(oReader["Status"])
getInfo.Gender = oReader["Gender"].ToString()
getInfo.Birthday = oReader["Birthday"].ToString()
getInfo.Email = oReader["Email"].ToString()
getInfo.Address = oReader["Address"].ToString()
getInfo.City = oReader["City"].ToString()
getInfo.Country = oReader["Country"].ToString()
getInfo.Mobilenumber = oReader["Mobile"].ToString()
pictureIdByte = (byte[])(oReader["PictureID"])
if (pictureIdByte == null)
{
getInfo.PictureID = pictureIdImg
}
else
{
//MemoryStream stream = new MemoryStream(pictureIdByte)
//getInfo.PictureID.Source = BitmapFrame.Create(stream, BitmapCreateOptions.None, BitmapCacheOption.OnLoad)
//var pictureIdVar = new BitmapImage()
//using (var memStream = new MemoryStream(pictureIdByte))
//{
// memStream.Position = 0
// pictureIdVar.BeginInit()
// pictureIdVar.CreateOptions = BitmapCreateOptions.PreservePixelFormat
// pictureIdVar.CacheOption = BitmapCacheOption.OnLoad
// pictureIdVar.UriSource = null
// pictureIdVar.StreamSource = memStream
// pictureIdVar.EndInit()
//}
//pictureIdVar.Freeze()
//getInfo.PictureID.Source = pictureIdVar
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message)
}
finally
{
accessToDatabase.ClosingDataBase()
}
return getInfo
}
解答
public class UserInfo
{
//...
public ImageSource PictureID { get; set; }
//...
}
参考URL
https://stackoverflow.com/questions/48843128/c-sharp-wpf-retrieve-image-from-sql-server-database-byte-to-image