esafb52
سه شنبه 18 تیر 1392, 12:30 عصر
با سلام من دارم به صورت سه لایه تو یه پروژه کار میکنم تو لایه BAL یه متد برای اینسرت کردن دیتا نوشتم تنها مشکلی که هست اینکه نمیتونم بهش مقدار نال پاس کنم اونم فقط برای فیلد عکس
از چه چیزی میتونم استفاده کنم تا درصورتیکه اگه بهش عکسی ندادم هیچی درج نکنه البته منظورم متدی هست که تو اون لایه نوشتم
کد های من که بدون فیلد عکس خوب کار میکنن
:
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Data;
using System.Windows.Forms;
namespace PhtooMangement
{
public class BAL
{
DAL db = new DAL();
private int _id;
private string _name;
private string _path;
private int _picnumber;
public byte[] _image2;
public byte[] Bytesimages
{
get { return _image2; }
set { _image2 = value; }
}
public int id
{
get { return _id; }
set { _id = value; }
}
public string name
{
get { return _name; }
set { _name = value; }
}
public int picnumber
{
get { return _picnumber; }
set { _picnumber = value; }
}
public string path
{
get { return _path; }
set { _path = value; }
}
public void insert()
{
string sql = "INSERT INTO tbpic (fullname,picnumber,path)";
sql += "values (N'{0}',{1},N'{2}')";
sql = String.Format(sql, this._name, this._picnumber, this._path);
db.conect();
db.docomand(sql);
db.disconect();
}
و اما زمانیکه که عکس رو هم در دستور اینسرت اضافه میکنم خطا میده!!!!!
public void insert()
{
string sql = "INSERT INTO tbpic (fullname,picnumber,path,image)";
sql += "values (N'{0}',{1},N'{2}',{3})";
sql = String.Format(sql, this._name, this._picnumber, this._path,this._image2);
db.conect();
db.docomand(sql);
db.disconect();
}
البته اگه از سه لایه استفاده نکنم مشکلی ندارم اما با این روش نمیدونم چطور حلش کنم
کدهام بدون معماری سه لایه:
if (textBoxX1.Text == "" || textBoxX2.Text == "")
{
MessageBox.Show("!!!لطفا موارد خواسته شده را کامل نمایید");
return;
}
else
{
if (pictureBox1.Image == null || checkBox1.Checked == false)
{
cmd.CommandText = "INSERT INTO tbpic (fullname,tell,picnumber,path) values(@1,@2,@3,@4)";
cmd.Parameters.Clear();
cmd.Parameters.AddWithValue("@1", textBoxX1.Text);
cmd.Parameters.AddWithValue("@2", textBoxX2.Text);
cmd.Parameters.AddWithValue("@3", textBoxX3.Text);
cmd.Parameters.AddWithValue("@4", textBoxX4.Text);
}
else
{
MemoryStream ms = new MemoryStream();
pictureBox1.Image.Save(ms, pictureBox1.Image.RawFormat);
byte[] arrImage = ms.GetBuffer();
ms.Close();
cmd.CommandText = "INSERT INTO tbpic (fullname,tell,picnumber,path,image) values(@1,@2,@3,@4,@5)";
cmd.Parameters.Clear();
cmd.Parameters.AddWithValue("@1", textBoxX1.Text);
cmd.Parameters.AddWithValue("@2", textBoxX2.Text);
cmd.Parameters.AddWithValue("@3", textBoxX3.Text);
cmd.Parameters.AddWithValue("@4", textBoxX4.Text);
cmd.Parameters.AddWithValue("@5", arrImage);
}
}
try
{
iud(cmd);
pictureBox1.Image = null;
MessageBox.Show("این عکس با موفقیت اضافه شد");
clearalltextbox();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
con.Close();
LoadAll();
MessageBox.Show("!!!این عکس قبلا ثبت شده است");
}
از چه چیزی میتونم استفاده کنم تا درصورتیکه اگه بهش عکسی ندادم هیچی درج نکنه البته منظورم متدی هست که تو اون لایه نوشتم
کد های من که بدون فیلد عکس خوب کار میکنن
:
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Data;
using System.Windows.Forms;
namespace PhtooMangement
{
public class BAL
{
DAL db = new DAL();
private int _id;
private string _name;
private string _path;
private int _picnumber;
public byte[] _image2;
public byte[] Bytesimages
{
get { return _image2; }
set { _image2 = value; }
}
public int id
{
get { return _id; }
set { _id = value; }
}
public string name
{
get { return _name; }
set { _name = value; }
}
public int picnumber
{
get { return _picnumber; }
set { _picnumber = value; }
}
public string path
{
get { return _path; }
set { _path = value; }
}
public void insert()
{
string sql = "INSERT INTO tbpic (fullname,picnumber,path)";
sql += "values (N'{0}',{1},N'{2}')";
sql = String.Format(sql, this._name, this._picnumber, this._path);
db.conect();
db.docomand(sql);
db.disconect();
}
و اما زمانیکه که عکس رو هم در دستور اینسرت اضافه میکنم خطا میده!!!!!
public void insert()
{
string sql = "INSERT INTO tbpic (fullname,picnumber,path,image)";
sql += "values (N'{0}',{1},N'{2}',{3})";
sql = String.Format(sql, this._name, this._picnumber, this._path,this._image2);
db.conect();
db.docomand(sql);
db.disconect();
}
البته اگه از سه لایه استفاده نکنم مشکلی ندارم اما با این روش نمیدونم چطور حلش کنم
کدهام بدون معماری سه لایه:
if (textBoxX1.Text == "" || textBoxX2.Text == "")
{
MessageBox.Show("!!!لطفا موارد خواسته شده را کامل نمایید");
return;
}
else
{
if (pictureBox1.Image == null || checkBox1.Checked == false)
{
cmd.CommandText = "INSERT INTO tbpic (fullname,tell,picnumber,path) values(@1,@2,@3,@4)";
cmd.Parameters.Clear();
cmd.Parameters.AddWithValue("@1", textBoxX1.Text);
cmd.Parameters.AddWithValue("@2", textBoxX2.Text);
cmd.Parameters.AddWithValue("@3", textBoxX3.Text);
cmd.Parameters.AddWithValue("@4", textBoxX4.Text);
}
else
{
MemoryStream ms = new MemoryStream();
pictureBox1.Image.Save(ms, pictureBox1.Image.RawFormat);
byte[] arrImage = ms.GetBuffer();
ms.Close();
cmd.CommandText = "INSERT INTO tbpic (fullname,tell,picnumber,path,image) values(@1,@2,@3,@4,@5)";
cmd.Parameters.Clear();
cmd.Parameters.AddWithValue("@1", textBoxX1.Text);
cmd.Parameters.AddWithValue("@2", textBoxX2.Text);
cmd.Parameters.AddWithValue("@3", textBoxX3.Text);
cmd.Parameters.AddWithValue("@4", textBoxX4.Text);
cmd.Parameters.AddWithValue("@5", arrImage);
}
}
try
{
iud(cmd);
pictureBox1.Image = null;
MessageBox.Show("این عکس با موفقیت اضافه شد");
clearalltextbox();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
con.Close();
LoadAll();
MessageBox.Show("!!!این عکس قبلا ثبت شده است");
}