通讯录三层结构开发
所遇问题汇集:
1.三层间关系如何,在项目中如何引用。
答:本项目分为MyAddBookUI 、 AddBookBLL 、AddBookDAL 三层结构。
AddBookDAL -----> AddBookBLL -----> MyAddBookUI
2.Picture控件如何以控件大小来显示图像
答:
string strImageFileName; //存储图像路径所用
OpenFileDialog file1 = new OpenFileDialog();
file1.Filter = "(图片文件)|*.jpg;*.png;*.jpeg";
if (file1.ShowDialog() == DialogResult.OK)
{
//pictureBox1 是picture控件名
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
pictureBox1.Image = Image.FromFile(file1.FileName);
strImageFileName = file1.FileName;
}
3.窗体间数据如何进行通信
答:1.通过构造函数中带入参数(变量、控件等)、甚至整个窗体
2.事件和委托,,,,,这个我没弄懂,本项目没用
4.如何将图片存入、取出mysql数据库
答:考虑到将真个图片存入数据库中,存储量将大,所以考虑将图片绝对路径保存到数据库中,既方便存储有方便取出。
5.如何解决路径存入mysql数据库中出现消失路径分隔符
答: string sql = sqlTemp.Replace("\\","\\\\");
其中如果sqlTemp内部带有”\\” ,通过转换吗,将转换为”\\\\”,因为在数据处理中,‘\\’表示‘\’,
6.如何将mysql中保存的图片路径取出来后,显示在DatagridviewImageColumn中
答:由于没有想到好办法,只能使用笨拙的方式解决该问题。思路如下:先从数据库中读取姓名等字段显示在Datagridview中,然后在根据读取来的数据行数,且每行中的姓名(有代表性的字段)作为查询数据库条件,读取图片路径,最后将姓名对应行的DatagridviewImageColumn的单元格中的值设置为对应路径所表示的图像。之所以分两次读取,是在试验中,如果一次性读取所要显示信息,则将会在绑定数据源的时候,全部绑定,也就是将会显示出保存图片的路径。而不能正常显示出图片的信息内容。
实例:
//1.显?示?好?友?信?息¢
dt = mybll.ShowFriend();
dataGridView1.DataSource = dt;
//显?示?头?像?
strImageFileName.ImageLayout = DataGridViewImageCellLayout.Zoom;
for (int i = 0; i < dt.Rows.Count; i++)
{
DataRow drtemp = dt.Rows[i];
DataTable dttemp;
dttemp = mybll.SelectFriend(dt.Rows[i]["strName"].ToString());
drtemp = dttemp.Rows[0];
if (drtemp["strImageFileName"].ToString() !=null)
{
dataGridView1.Rows[i].Cells[0].Value = Image.FromFile(drtemp["strImageFileName"].ToString());
}
}
源码及设计文档下载地址:http://download.csdn.net/detail/yaoshenjie/9583830