PDA

View Full Version : برای درج عکس در بانک اطلاعاتی حتما باید بصورت پارامتری ارسال بشود؟



sajad_3dmax
دوشنبه 01 تیر 1394, 07:12 صبح
با سلام خدمت دوستان عزیز
آیا برای درج عکس در بانک اطلاعاتی حتما باید بصورت پارامتری ارسال بشود؟مثل کد زیر

cmd.Parameters.AddWithValue("@Pic", ary_Pic);

نمیشه خود آرایه رو بصورت مستقیم توی دستور آورد. آخه بنده یه کلاس جدا واسه کار با دیتا بیس نوشته بودم که یکی از متدهاش متد insert بود. نام جدول، اسامی فیلدها و مقادیر رو میفرستادمش واسش خودش کارشو انجام میداد.

sajad_3dmax
دوشنبه 01 تیر 1394, 08:34 صبح
آقا بین دوستان کسی نیست که بنده رو راهنمایی کنه لطفا

Mahmoud Zaad
دوشنبه 01 تیر 1394, 08:42 صبح
سلام
شما نوع فیلد عکس رو توی اون کلاس چی در نظر گرفتی؟ اگه byte در نظر بگیری که مشکلی نیست. خیلی راحت توی فرم ها عکس رو تبدیل به byte می کنید بعد هم به کلاس مربوطه پاس می دید.

sajad_3dmax
دوشنبه 01 تیر 1394, 09:21 صبح
من همه مقادیر رو بصورت رشته ای ارسال میکردم مهندس . هرچی بود حتی فیلدهایی مثل شماره ملی و ...
نمیشه کاریش کرد مهندس بصورت رشته ای؟

alireza264
دوشنبه 01 تیر 1394, 09:39 صبح
من همه مقادیر رو بصورت رشته ای ارسال میکردم مهندس . هرچی بود حتی فیلدهایی مثل شماره ملی و ...
نمیشه کاریش کرد مهندس بصورت رشته ای؟

سلام
حتما باید بصورت پارامتری ارسال بشه. چون نوع عکس image هستش و باید بصورت Byte[] نوشته بشهو اگه غیر از این بنویسی خونده نمیشه

sajad_3dmax
دوشنبه 01 تیر 1394, 09:57 صبح
سلام
حتما باید بصورت پارامتری ارسال بشه.
پس تفاوتی نمیکرد اگه حتی کلاس دیتابیس ام رو تغییر میدادم درسته. منظورم اینه متد insert ای که تعریف کردم تو کلاس دیتابیسم اینجا دیگه بکارم نمیاد.

alireza264
دوشنبه 01 تیر 1394, 10:43 صبح
پس تفاوتی نمیکرد اگه حتی کلاس دیتابیس ام رو تغییر میدادم درسته. منظورم اینه متد insert ای که تعریف کردم تو کلاس دیتابیسم اینجا دیگه بکارم نمیاد.

سلام
آره چون متغیری از نوع عکس رو نمیشه با کد مستقیم به دیتا بیس فرستاد

asman.abi
دوشنبه 01 تیر 1394, 11:12 صبح
سلام
حتما باید بصورت پارامتری ارسال بشه. چون نوع عکس image هستش و باید بصورت Byte[] نوشته بشهو اگه غیر از این بنویسی خونده نمیشه

نه لزوما این گونه نیست. میشه به صورت رشته ای هم ارسال بشه. ولی نظر من اینه که رشته ای ارسال نشه.
چون هم سرعت پایین می آد به دلیل تبدیل.
هم برای حجم ها بالا مشکل پیش می آد. نرم افزار به حالت NotReponding می ره. چون حجم بالاست.

hamid_hr
دوشنبه 01 تیر 1394, 11:39 صبح
من همه مقادیر رو بصورت رشته ای ارسال میکردم مهندس . هرچی بود حتی فیلدهایی مثل شماره ملی و ...

این فک کنم اشتباه باشه
شما کلاس رو تغییر بده و همه مقادیرو به صورت پارامتر ارسال کنید

sajad_3dmax
دوشنبه 01 تیر 1394, 12:22 عصر
شما کلاس رو تغییر بده و همه مقادیرو به صورت پارامتر ارسال کنید

چطوری پارامتری ارسال کنم مهندس

hamid_hr
دوشنبه 01 تیر 1394, 12:46 عصر
شما یک تابع مثلا همون insert رو که نوشتین بزارین تا دوستان راهنمایی کنن

sajad_3dmax
دوشنبه 01 تیر 1394, 13:05 عصر
این هم کد مربوط به متد موردنظر

public static int Insert(string Tbl_Name, string Flds_Name, string Values)
{
SqlCommand Db_Com = newSqlCommand("insert into " + Tbl_Name + "(" + Flds_Name + ") values(" + Values + ")", Db_Con);
Db_Con.Open();
int c = Db_Com.ExecuteNonQuery();
Db_Con.Close();
return c;
}

sajad_3dmax
سه شنبه 02 تیر 1394, 09:48 صبح
همونطوری که خدمتتون عرض کردم بنده همه پارامترها رو(حتی مقادیر فیلدها رو) بصورت رشته ای واسه متد insert ارسال میکنم. چطوری میتونم مقادیر پارامتری رو به متدم ارسال کنم.
کسی نیست بنده رو راهنمایی کنه؟

golbafan
سه شنبه 02 تیر 1394, 10:10 صبح
سلام باید فیلد blab خودتون رو بصورت hex بدید

مثال:

INSERT INTO test1 VALUES ('1', 'salam', 0xFFD8FFE000104A46494600010101006000600000FFDB0043 00020101020101020202020202020203050303030303060404 0305070607070706070708090B0908080A0807070A0D0A0A0B 0C0C0C0C07090E0F0D0C0E0B0C0C0CFFDB0043010202020303 03060303060C0807080C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C 0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C 0C0C0C0C0C0C0C0C0CFFC00011080034005303012200021101 031101FFC4001F000001050101010101010000000000000000 0102030405060708090A0BFFC400B510000201030302040305 0504040000017D010203000411051221314106135161072271 14328191A1082342B1C11552D1F02433627282090A16171819 1A25262728292A3435363738393A434445464748494A535455 565758595A636465666768696A737475767778797A83848586 8788898A92939495969798999AA2A3A4A5A6A7A8A9AAB2B3B4 B5B6B7B8B9BAC2C3C4C5C6C7C8C9CAD2D3D4D5D6D7D8D9DAE1 E2E3E4E5E6E7E8E9EAF1F2F3F4F5F6F7F8F9FAFFC4001F0100 03010101010101010101000000000000010203040506070809 0A0BFFC400B511000201020404030407050404000102770001 02031104052131061241510761711322328108144291A1B1C1 09233352F0156272D10A162434E125F11718191A262728292A 35363738393A434445464748494A535455565758595A636465 666768696A737475767778797A82838485868788898A929394 95969798999AA2A3A4A5A6A7A8A9AAB2B3B4B5B6B7B8B9BAC2 C3C4C5C6C7C8C9CAD2D3D4D5D6D7D8D9DAE2E3E4E5E6E7E8E9 EAF2F3F4F5F6F7F8F9FAFFDA000C03010002110311003F00FD FCA28A2800A28A2800A28A2800A2B8FD6BE35E97A17C7DF0D7 C3A96DF506D6FC55E1FD5BC49693A4686D63B7D36E74CB79D2 462C1C48CFAADB9401082125CB290A1BB0A0028ACFF1678B34 BF01785752D775DD4B4FD1744D16D25BFD4350BFB84B6B5B0B 7890BCB34B2B9091C688ACCCCC40500924014784FC59A5F8F7 C2BA6EBBA16A5A7EB5A26B56915FE9FA8585C25CDADFDBCA81 E29A295094923746565652430208241A00D0A28A2800A28A28 00A28AFCE0835BD77C71FF0004EDD23F6ADFDA63F682F88167 E0993C2B63F12DFC0DF0DAE63F006916D15C6891793A52DDC5 38D5AEEE1EE6E1CC61F558A2B8B996DD7C950AA8403EBFFDBB BE0678A7F688FD99F54D03C0BAA787F47F1B69FAAE8DE27F0F 4FAEDB4D71A549A8E91AB59EAD6D05DAC2EB28B79A6B248A47 8CEF44959955CA853D07ECABF1D3FE1A5FF671F05F8EA4D2FF 00E11FD43C49A54373AA688D73F689BC3BA885D97BA64EDB10 FDA2D2E966B6955911D258245644652A3F1C7FE0CDDD5FE2E4 5A778FFC1FE22F88FA849F0DFC17E1FD3358B0F87F79A348B2 68F75AECF717105C8B9B88A39628DED2C05D2436CD2DACC9AD 24C1966F356BF47BF637D66DFF0067CFDB6BE3BFC15BDD27C6 1A3C7E2DF105CFC58F03C97CF3DEE8DAA697796DA5A6B42CAE 1A49160922D7A7BC9A6B36F28A1D561923431CB9500EC3E237 FCA537E0DFFD92AF1E7FE9DFC195F4057CFF00F11BFE529BF0 6FFEC9578F3FF4EFE0CAFA02803E5FF8E50685FB407FC14D7E 14FC3CD6748FF849B49F85FE15D47E295DDADD69124B61A26B 8D7B67A7F87AF9AE0C7E57DA3C9FF8497C987CC24340D3F97B E08254FA82BE6FFF00827CF8B34AFDA527F889F1EAC752D3F5 98FE20F882F3C2FA1DCD85C25CDAC3E1FF000F6A37FA6D9A45 3C67CAB98E7BB1AA6A4B305DE06AE202F2C76D0BD7D2140051 4514005145140057CFFF00F049DFF94597ECD3FF0064ABC2FF 00FA68B5AF60F8B1E22D77C21F0B3C4BAB785BC3BFF098789B 4BD2AEAEF48D07EDF1E9FF00DB7791C2EF05A7DA6406383CD9 02C7E6B82A9BF711806BCFFF00E09EDF0B75DF81DFB02FC0FF 000578A6C7FB2FC4DE0FF87FA0E89ABD9F9D1CFF0064BCB6D3 ADE19E2F323668DF6C88CBB91994E3209183401D07C0BFD93B E167ECBFFDA9FF000AD3E1A7803E1DFF006E795FDA5FF08C78 7AD348FED0F2B7F95E77D9E34F33679B26DDD9DBE63E31B8D7 807C75F1A7C5DB9FDAFF00C39E33F057ECEDF1035AD43C1DA5 6B5E08B3975BF11786F49F0E6A506A9AAE87249AAC97916A57 5A8416F0C3A4BC8235D3259E4132A98E3652A7EBFA2803E309 FF00E0953AD7C6AFDA1DFE3AFC47F897A8681F1A2DEEEC9BC3 17FE06D234A11FC3FD2E0B0D4AD5B45B69F52B2BA7BE8E57D6 2FE4B8BA9A288DC3ADABADBDA881221DFF008B3F662F8F3F1A FC2BA97873C6BFB42E9FE19D1352B49607BCF853E06FF84635 FCBA18CA8BED46FF005648A3D8EE736F04370B22C2E9711846 493E90A28039FF0084FF000B742F81DF0B3C35E0AF0B58FF00 65F867C1FA55AE89A459F9D24FF64B3B68521822F3246691F6 C68ABB9D998E32493935D05145001451450014514500145145 00145145001451450014514500145145007FFFD9);



132527

hamid_hr
سه شنبه 02 تیر 1394, 11:34 صبح
ببینین اگه بتونین به صورت پارامتر بنویسین میشه همه کار کرد یه چیزی مثل این تابع


static void insert(string TblName, object[,] parameters)
{
string sqlcmd = string.Format("insert into {0} ", TblName);
List<SqlParameter> lsq = new List<SqlParameter>();
StringBuilder sb1 = new StringBuilder();
StringBuilder sb2 = new StringBuilder();
for (int i = 0; i < parameters.GetLength(0); i++)
{
if (i != 0)
{
sb1.Append(",");
sb2.Append(",");
}
lsq.Add(new SqlParameter("@" + parameters[i, 0].ToString(), parameters[i, 1]));
sb1.Append(parameters[i, 0]);
sb2.Append("@" + parameters[i, 0]);
}
sqlcmd += string.Format("({0})value({1})", sb1.ToString(), sb2.ToString());
}
using (SqlCommand cmd = new SqlCommand(sqlcmd, Db_Con))
{
cmd.Parameters.AddRange(lsq.ToArray());
Db_Con.Open();
cmd.ExecuteNonQuery();
Db_Con.Close();
}


اینطوریم فراخوانی کنید

insert("Test", new object[,] {{"ID",1},{"Name","Hamid"},{"Discription","fffff"} });