PDA

View Full Version : یه مشکل با فیلد ار نوع ntext



ali1381
چهارشنبه 18 مهر 1386, 10:51 صبح
من در دیتابیسم یه فیلد از نوع ntext دارم که محتوای اونو از طریق برنامه پر می کنم ولی جالب اینجاست که اصلا نمی تونه یه متن بزرگ بگیره یعنی دقیقا 16 کاراکتر می گیره. طول این متغیر در برنامه هم درست در نظر گرفته شده همه مراحل برنامه نویسی هم درسته ولی نمی دونم چرا متن بزرگ نمی گیره کمک :عصبانی++:

babak23
چهارشنبه 18 مهر 1386, 11:03 صبح
بیشترین مقدار( max )این نوع متغیر تو اسکول 16 هست پس برنامت مشکلی نداره
میتونی از نوع varchar یا nvarchar استفاده کنی

hdv212
چهارشنبه 18 مهر 1386, 12:27 عصر
باز مثل همیشه، عزیزم کدت رو بذار ببینیم.

ali1381
پنج شنبه 19 مهر 1386, 08:32 صبح
ولی من بارها از همین نوع استفاده کردم و حتی چندین صفحه رو توش ریختم (متنهای طولانی) ولی فقط ایندفعه به این مشکل برخوردم مقدار nvarchar زیاد نمی تونه کمکم کنه

ali1381
پنج شنبه 19 مهر 1386, 08:44 صبح
اینم کد:


General tmpGeneral= new General();
tmpGeneral.Add(Convert.ToInt32(ddlCategory.Selecte dItem.Value),txtTitle.Text,txtContentText.Text,lbl Date.Text);
tmpGeneral.ConnectioClose();

اینم کد add کلاس:


publicint Add(int IdGen,string GenTitle,string GenText,string GenDate)
{
int numAffected;
//create the parameters
SqlParameter[] parameter={
new SqlParameter("@IdNum",SqlDbType.Int,4),
new SqlParameter("@IdGen",SqlDbType.TinyInt,1),
new SqlParameter("@GenTitle",SqlDbType.NVarChar,100),
new SqlParameter("@GenText",SqlDbType.NText,16),
new SqlParameter("@GenDate",SqlDbType.VarChar,50),


};

parameter[0].Direction=ParameterDirection.Output;
parameter[1].Value=IdGen;
parameter[2].Value=GenTitle;
parameter[3].Value=GenText;
parameter[4].Value=GenDate;

RunProcedure("Mysp_General_Add",parameter,out numAffected);
return numAffected;
}

اینم storeprocedureمربوطه:

CREATE PROCEDURE Mysp_General_Add
@IdNum as int output,
@IdGen as tinyint,
@GenTitle as nvarchar (100),
@GenText as ntext,
@GenDate as varchar(50)
AS
INSERT INTO Tbl_General
( IdGen,GenTitle,GenText,GenDate)
VALUES (@IdGen, @GenTitle , @GenText, @GenDate)
set @IdNum=@@IDENTITY
GO
فقط خواهش می کنم کمک

hdv212
پنج شنبه 19 مهر 1386, 09:18 صبح
در این قسمت :

new SqlParameter("@GenText",SqlDbType.NText,16),
از یه OverLoad Constructor دیگه استفاده کن، یعنی فقط نام پارامتر و مقدارشو بهش پاس کن(چنین overLoad ای وجود داره)، اینطوری پارامتر شما به صورت آبجکت به sql server ارسال میشه، مشکلی هم نداره. اگه مشکلت حل شد که احتمالا حل میشه از همون overLoad استفاده کن.

ali1381
یک شنبه 22 مهر 1386, 09:59 صبح
میشه کدش رو بذارین، overloadi که شما میگین رو error می گیره:

SalarSoft
یک شنبه 22 مهر 1386, 17:10 عصر
کمی هم به خودت زحمت به برو دنبالش:


new SqlParameter("@GenText",SqlDbType.NText)