PDA

View Full Version : سوال: اشكال در فرمت فيلد در بانك اس كيو ال سرور 2005



VB Master
جمعه 31 تیر 1390, 14:44 عصر
سلام خدمت دوستان محترم
من يك ديتابيس در بانك اس كيو ال سرور 2005 دارم كه حاوي يك جدول لاگين مي‌باشد.
2تا فلد در اين جدول دارم به نام‌هاي UserName , Password
فرمت اين فيلدها از نوع text مي‌باشد.
مشكل اينجاست كه وقتي در سي شارپ يك كد اس كيو ال مينويسم به عنوان مثال كد زير

objCom.CommandText = "SELECT UserName,Password FROM tblLogin WHERE UserName='" + txtUser.Text + "' And Password='" + txtPass.Text "'";

ارور ميده و اين دستورات رو اجرا نميكنه

اما وقتي فرمت فيلدها در جدول رو به int و يا nchar(10) ميزارم مشكلي نيست ولي من ميخوام از نوع text باشه.
دوستان چجوري اين مشكل رفع ميشه؟

Farshid007
جمعه 31 تیر 1390, 15:24 عصر
چه اروری میده ؟نباید ارور بده

VB Master
جمعه 31 تیر 1390, 15:48 عصر
اين كدها رو نوشتم


objCom.Connection = objCon;
objCom.CommandType = CommandType.Text;
objCom.CommandText = "SELECT UserName,Password FROM tblLogin WHERE UserName='" + textBox1.Text + "' And Password='" + textBox2.Text + "'";

SqlDataReader dr;
objCon.Open();
dr = objCom.ExecuteReader();

if (dr.HasRows==true )
{
objCon.Close();
Form a = new frmMain();
a.Show();
}
else
{
objCon.Close();
MessageBox.Show("");
textBox1.Text = "";
textBox2.Text = "";
textBox1.Focus();
}

كه در خطي كه كد dr = objCom.ExecuteReader(); هست واسه اجراي دستورات اس كيو ال، ارور زير رو ميده:

ارور : {"The data types text and varchar are incompatible in the equal to operator."}

akarsu
جمعه 31 تیر 1390, 16:10 عصر
سلام
username شما بصورت فارسی هست ؟

VB Master
جمعه 31 تیر 1390, 16:17 عصر
اصلا فرقي نداره چه فارسي چه لاتين چه عدد هرچي باشه ارور ميده
فقط هم به فرمت فيلدها ارور ميده كه text هست
فرمت‌ها رو كه در جدول از text به int تغيير ميدم مشكل برطرف ميشه اما فرمت‌ها بايد text باشه.
چجوري اين مشكل حل ميشه ؟

gilas1368
جمعه 31 تیر 1390, 18:14 عصر
شما مي تونيد از Varchar براي هر دو فيلدتون استفاده كنين كه تمام فرمت هايي رو كه مي خواين مثل text و غيره شامل ميشه
مزيت اين فرمت اينكه اگه تعداد كاراكتراتون از مقداري كه داخل
پرانتز وارد ميكنين كمتر باشه، اون فضاي خالي اضافي رو داخل پايگاه اعمال نمي كنه و از افزونگي بيش از حد پايگاه داده جلوگيري ميشه


اميدوارم مفيد واقع بشه