大家觉得,存储用户的头像该如何存?
public partial class Form1: Form {
#region 多次用到成员变量.
private DataSet set = new DataSet(); //存储Adapter读取的数据集.
private SqlDataAdapter adapter;
private string strConnction = @"Data Source=.\SQLExpress;Initial Catalog=DB_User;Persist Security Info=True;User ID=sa;Password=**********";
#endregion
public Form1() {
InitializeComponent();
}
//选择用户头像.
private void btnSelectImg_Click(object sender, EventArgs e) {
openFD.Filter = "(*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF|All files (*.*)|*.*";//图像过滤.
if(openFD.ShowDialog() == DialogResult.OK) picBox.Image = Image.FromFile(openFD.FileName);
}
//添加用户方法.
bool AddUser(string strName, string strPicture) {
using(SqlConnection connect = new SqlConnection(strConnction)) {
using(FileStream fs = new FileStream(strPicture, FileMode.Open, FileAccess.Read)) {
using(BinaryReader bReader = new BinaryReader(fs)) { //二进制读取图像.
byte[] bytes = bReader.ReadBytes((int)fs.Length);
SqlCommand cmd = connect.CreateCommand();
cmd.CommandText = "insert into [dbo].[T_User](FName,FPhoto) values(@name,@photo)";
cmd.Parameters.Clear(); //清空先前参数变量.
cmd.Parameters.Add("@name", SqlDbType.NVarChar, 50).Value = txtUserName.Text;
cmd.Parameters.Add("@photo", SqlDbType.Image).Value = bytes;
adapter = new SqlDataAdapter(cmd);
adapter.Fill(set, "T_User"); //填充T_User表.
}
}
}
return true;
}
//添加新用户.
private void btnAddUser_Click(object sender, EventArgs e) {
if(!string.IsNullOrEmpty(txtUserName.Text) && picBox.Image != null) {
if(AddUser(txtUserName.Text.Trim(), openFD.FileName)) {
MessageBox.Show("用户添加成功");
}
else
MessageBox.Show("用户添加失败");
}
}
//显示用户信息.
void ShowUser() {
using(SqlConnection conect = new SqlConnection(strConnction)) {
SqlCommand cmd = conect.CreateCommand();
cmd.CommandText = "select [FName] as 姓名,[FPhoto] as 头像 from [dbo].[T_User]";
adapter = new SqlDataAdapter(cmd);
adapter.Fill(set, "T_User");
dataGV.DataSource = set.Tables["T_User"]; //指定数据源.
}
}
//初始时加载用户.
private void Form1_Load(object sender, EventArgs e) {
ShowUser();
}
}
/*以上是我看了一个例子之后写的,按照他的思路,写的很顺...但是我突然想到之前写Web的时候,用户的图片之类的,数据库只是保存了图片的路径,而不是以二进制存储在上面DataSet中,所以我感觉我这个做的,是不是真的没有意义.图片占的内存很大.用户肯定不会是一两个...大家觉得呢...*/