PDA

View Full Version : ذخیره متن فارسی در sql express



golnar1992
سه شنبه 10 بهمن 1391, 20:21 عصر
من میخوام متن فارسی در جدولم ذخیره کنم نوع داده رو هم nvarchar میذارم ولی باز علامت سوال ذخیره میشه چیکار کنم؟:ناراحت:ممنون میشم کمکم کنید

ma.rad
سه شنبه 10 بهمن 1391, 20:39 عصر
حتما زمان ایجاد بانک براش تعریف نکردید زیان فارسی رو پشتیبانی کنه و یا اطلاعاتتون رو درست تو بانک ذخیره نمی کنید
می تونید کدتون یا برنامتون رو بزارید براتون اصلاح کنیم

golnar1992
سه شنبه 10 بهمن 1391, 20:50 عصر
private void BAddMean_Click(object sender, EventArgs e)
{
if (TMean.Text.Trim() != "")
{
LMean.Items.Add(TMean.Text);
TMean.Focus();

SqlConnection con = new SqlConnection();
con.ConnectionString = @"Data Source=.\sqlexpress;Initial Catalog=504words;Integrated Security=True";
SqlCommand cmdMean = new SqlCommand();
con.Open();
cmdMean.Connection = con;
cmdMean.CommandType = CommandType.Text;
cmdMean.CommandText = "insert into T_Means (WordID,Mean) values (@WordID,@Mean)";
cmdMean.Parameters.Add(new SqlParameter("@WordID", SqlDbType.Int));
cmdMean.Parameters["@WordID"].Value = WordID;
cmdMean.Parameters.Add(new SqlParameter("@Mean", SqlDbType.Char));
cmdMean.Parameters["@Mean"].Value = TMean.Text;
cmdMean.ExecuteNonQuery();
con.Close();
TMean.Text = "";
}
else
{
MessageBox.Show("لطفاً معني کلمه موردنظر را وارد کنيد", "اخطار", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}
این برنامه ممنون میشم کمکم کنید

mossaferin
سه شنبه 10 بهمن 1391, 20:50 عصر
موقع ایجاد دیتا بیس بایستی collation رو روی Persian_100_CI_AI تنظیم کنید ... ( از بخش option )

golnar1992
سه شنبه 10 بهمن 1391, 20:53 عصر
من express ساختم داخل خود سی شارپ

ordebehesht
سه شنبه 10 بهمن 1391, 21:01 عصر
دوست من تو کوئری هات قبل ورودی هات از N استفاده کن مثل
"select * from table name where name=N'name'"

golnar1992
سه شنبه 10 بهمن 1391, 21:03 عصر
'' باید بین N و name باشه؟

vapa_71
سه شنبه 10 بهمن 1391, 21:10 عصر
دوستان من یه موضوع رو میگم البته شاید چندان ربط نداشته باشه شاید علت این موضوع چیز دیگه ای باشه
اما مشکلی که همه با نرم افزار های فارسی دارن و به جای حروف ؟؟؟؟؟؟ نشون میده رو میشه راحت از توی ویندوز حل کرد ابتدا وارد Control Panel بشید و سپس Region And Language سپس تب Administrative رو بزنید و از قسمت Chenge System Local زبان فارسی رو اضافه کنید و بعدش 1 بار ری استارت که بکنید مشکل نرم افزار های فارسی تون حل میشه
این توی 7 بود
ببخشید اگه به این موضوع ربط نداره

ordebehesht
سه شنبه 10 بهمن 1391, 21:12 عصر
درستش کردم ممنون از تذکرت

aliasghar2
سه شنبه 10 بهمن 1391, 21:14 عصر
واسه تغییر collation می تونی از script زیر استفاده کنی

ALTER DATABASE <DATABASE> COLLATE <COLLATION>

exec sp_configure 'allow updates',1
go
reconfigure with override
go
update syscolumns
set collationid = (select top 1 collationid from systypes where systypes.xtype=syscolumns.xtype)
where collationid <> (select top 1 collationid from systypes where systypes.xtype=syscolumns.xtype)
go
exec sp_configure 'allow updates',0
go
reconfigure with override
go

golnar1992
سه شنبه 10 بهمن 1391, 21:30 عصر
کدوم قسمت برنامه بنویسم؟

aliasghar2
سه شنبه 10 بهمن 1391, 21:39 عصر
می تونی به عنوان یک sql command یه بار توبرنامه استفاده کنی زیاد با sql express کار نکردم ولی فکر کنم بتونی توی محیط vs یه script بنویسی و اجرا کنی ولی راه اولی که گفتم رو خودم قبلا اجرا کردم

محض اطمینان هم باید بگم که توی خط اول query باید جای databasename نام بانکتو و جای COLLATION نام COLLATION دلخوا رو بنویسی مثلا Persian_100_CI_AI یا ARABIC_100_CI_AI

golnar1992
سه شنبه 10 بهمن 1391, 21:45 عصر
یعنی این کد رو قبل از دستورات sql بنویسم ببخشید اینقدر سوال میکنم:ناراحت:

ordebehesht
سه شنبه 10 بهمن 1391, 21:48 عصر
با کی هستس یه نقل قول بزار توا کامنت خودت

golnar1992
سه شنبه 10 بهمن 1391, 21:52 عصر
می تونی به عنوان یک sql command یه بار توبرنامه استفاده کنی زیاد با sql express کار نکردم ولی فکر کنم بتونی توی محیط vs یه script بنویسی و اجرا کنی ولی راه اولی که گفتم رو خودم قبلا اجرا کردم

محض اطمینان هم باید بگم که توی خط اول query باید جای databasename نام بانکتو و جای COLLATION نام COLLATION دلخوا رو بنویسی مثلا Persian_100_CI_AI یا ARABIC_100_CI_AI

یعنی این کد رو قبل از دستورات sql بنویسم ببخشید اینقدر سوال میکنم:ناراحت:

aliasghar2
سه شنبه 10 بهمن 1391, 21:54 عصر
:بامزه: اگه بامنی
اره می تونی اون رو به یه command بدی تعجب نکن و گیج نشو command صرفا select insert , delete , Update نیست می تونه هرچیز دیگه ای باشه مثل backup , drop table , alter
حتی می تونی چند دستور رو در یک command بدی

golnar1992
سه شنبه 10 بهمن 1391, 22:01 عصر
درست نشد من با express کار میکنم کسی نمیتونه کمکم کنه؟:افسرده:

ma.rad
سه شنبه 10 بهمن 1391, 22:06 عصر
کدتون نسبتا درسته
اگر کارای بالا رو انجام دادید نشده
برنامتون رو اینجا بزارید یا با پیام خصوصی بفرستید درستش کنیم

vapa_71
سه شنبه 10 بهمن 1391, 22:08 عصر
دوستان من یه موضوع رو میگم البته شاید چندان ربط نداشته باشه شاید علت این موضوع چیز دیگه ای باشه
اما مشکلی که همه با نرم افزار های فارسی دارن و به جای حروف ؟؟؟؟؟؟ نشون میده رو میشه راحت از توی ویندوز حل کرد ابتدا وارد Control Panel بشید و سپس Region And Language سپس تب Administrative رو بزنید و از قسمت Chenge System Local زبان فارسی رو اضافه کنید و بعدش 1 بار ری استارت که بکنید مشکل نرم افزار های فارسی تون حل میشه
این توی 7 بود
ببخشید اگه به این موضوع ربط نداره

اینو هم امتحان کن ضرر نداره

ordebehesht
سه شنبه 10 بهمن 1391, 22:12 عصر
درست نشد من با express کار میکنم کسی نمیتونه کمکم کنه؟:افسرده:
اونی که بهت گفتم انجامیدی

golnar1992
سه شنبه 10 بهمن 1391, 22:22 عصر
اونی که بهت گفتم انجامیدی
این N رو کجا باید بذارم برنامه رو بالا گذاشتم لطفا بهم بگید کجا بذارم؟چون مینویسم خطا میده

aliasghar2
سه شنبه 10 بهمن 1391, 22:26 عصر
دوست عزیر اگه یه بک اپ یا خوده بانکتو بزاری میتونم واست درستش کن

در مورد N باید اینجوری استفاده کنی
insert into table(Name)Values(N'تکست')

golnar1992
سه شنبه 10 بهمن 1391, 22:31 عصر
بانکم جدا از سیستم نیست فکر کنم فقط از سیستم خودم جواب میده

golnar1992
سه شنبه 10 بهمن 1391, 22:32 عصر
"insert into T_Means (WordID, Mean) values (@WordID,@Mean)";
cmdMean.Parameters.Add(new SqlParameter("@WordID", SqlDbType.Int));
cmdMean.Parameters["@WordID"].Value = WordID;
cmdMean.Parameters.Add(new SqlParameter("@Mean", SqlDbType.Char));
cmdMean.Parameters["@Mean"].Value = TMean.Text;
الان کجا n و بذارم؟

ma.rad
سه شنبه 10 بهمن 1391, 22:35 عصر
این برا قرار دادن n
String insertstring = "INSERT into Table1 (name,family,degree) values (N'" + txtName.Text + "',N'" + txtfamily.Text + "',N'" + txtdegreerr.Text +"')";
چه ورژنی از sql استفاده می کنید؟
این دو تا کوئری اجرا کن فکرکنم حل بشه
("SET NAMES 'UTF8'")
("SET character_set_connection = 'utf8'")
برا کد خودتون:
cmd.Parameters["@name"].SqlDbType = SqlDbType.NVarChar;

[/CSHARP]

aliasghar2
سه شنبه 10 بهمن 1391, 22:37 عصر
خب این خط رو عوض کن ببینیم درست میشه

cmdMean.Parameters.Add(new SqlParameter("@Mean", SqlDbType.vnarchar));

به جای char گداشتم NVarchar

golnar1992
سه شنبه 10 بهمن 1391, 23:01 عصر
بچه ها درست شدددددددددددددددددددددددد دددد:لبخندساده::تشویق:
دست همتون درد نکنه
با راه حل aliasghar2 (http://barnamenevis.org/member.php?163961-aliasghar2) تونستم حلش کنم.واقعا از همتون ممنونم

golnar1992
سه شنبه 10 بهمن 1391, 23:02 عصر
کمک بزرگی بهم کردید از صبر و وقتی که برام گذاشتید ممنونم دوستای مهندس:لبخندساده: