View Full Version : سلام من می خوام یک جستجو با نام کالا کنم
mohsen622001
یک شنبه 27 تیر 1389, 16:22 عصر
با استفاده از id می تونم ولی با استفاده از نام کالا نمی شه
این کد من
var upConnection = new SqlConnection(@"Data Source=.\SQLEXPRESS;Initial Catalog=forshgah;Integrated Security=True;Pooling=False");
var upCommand = new SqlCommand("SELECT ghforosh FROM listkharid WHERE name = "+"'"+comboBox2.Text+"'", upConnection);
upConnection.Open();
SqlDataReader reader = upCommand.ExecuteReader();
reader.Read();
labghymat.Text = reader["ghforosh"].ToString();
upConnection.Close();
این خطا را می ده
Invalid attempt to read when no data is present.
voodoo01
یک شنبه 27 تیر 1389, 16:27 عصر
دوست عزیز اگر مقداری که کوری شما بر میگردونه تنها یک سطر است از دستور
command.ExecuteScalar
می توانید استفاده کنید
var upCommand = new SqlCommand("SELECT ghforosh FROM listkharid WHERE name = "+"'"+comboBox2.Text+"'", upConnection);
upConnection.Open();
object Data = upCommand.ExecuteScalar();
Data
--------------
.
.
.
upConnection.Close();
karim_medusa
یک شنبه 27 تیر 1389, 16:34 عصر
مشکل خطا با کد زیر رفع میشه :
if (reader.Read())
{
if (reader["ghforosh"] != DBNull.Value)
labghymat.Text = reader["ghforosh"].ToString();
}
احتمالا نام را فارسی می خوای جستجو کنی !
در بانک اطلاعاتی نوع فیلد نام رو باید یونیکد انتخاب کنی nchar or nvarchar
ممکنه مشکل از حروفی که تایپ می کنه داره مثلا حرف ی رو ي یا برعکس یا حروف دیگه .
در کل مشکلات کار با فارسی زیاده.
mohsen622001
یک شنبه 27 تیر 1389, 16:43 عصر
منظورتان این جوری؟
var upConnection = new SqlConnection(@"Data Source=.\SQLEXPRESS;Initial Catalog=forshgah;Integrated Security=True;Pooling=False");
var upCommand = new SqlCommand("SELECT ghforosh FROM listkharid WHERE name = "+"'"+comboBox2.Text+"'", upConnection);
upConnection.Open();
var data = upCommand.ExecuteScalar();
labghymat.Text = data.ToString();
upConnection.Close();
beh_develop
یک شنبه 27 تیر 1389, 16:48 عصر
به جای این دستور :
labghymat.Text = data.ToString();بنویس :
if(data.Read())
{
labghymat.Text = data.ToString();
}
mohsen622001
یک شنبه 27 تیر 1389, 16:49 عصر
این که اصلا دیگه جستجو نکرد درست می گید نام کالا فارسیی
beh_develop
یک شنبه 27 تیر 1389, 16:50 عصر
این خط رو هم اصلاح کن :
var data = upCommand.ExecuteScalar();
به جاش بنویس :
var data = upCommand.ExecuteReader();
voodoo01
یک شنبه 27 تیر 1389, 16:53 عصر
object Data=(object)cmd.ExecuteScalar() ;
string Data=(string)cmd.ExecuteScalar() ;
از اینها هم میتوانی استفاده کنی
mohsen622001
یک شنبه 27 تیر 1389, 16:54 عصر
if(data.Read())
{
labghymat.Text = data.ToString();
}
این اصلا شرط رو چک نمی کنه
mohsen622001
یک شنبه 27 تیر 1389, 16:57 عصر
این مشکل را حل نکرد چون اسم کالا برام نتونست پیدا کنه
این شرط باعث پریدن از چاپ اسم کالا می شه
mohsen622001
یک شنبه 27 تیر 1389, 16:59 عصر
این کار مسئله را دور زد یعنی این شرط فقط باعث شد نام کالا بازم چاپ نشه
فقط خطا نگرفت
beh_develop
یک شنبه 27 تیر 1389, 17:02 عصر
این دستور رو :
var upCommand = new SqlCommand("SELECT ghforosh FROM listkharid WHERE name = "+"'"+comboBox2.Text+"'", upConnection);
رو با این عوض کن :
var upCommand = new SqlCommand("SELECT ghforosh FROM listkharid WHERE name = "+"N'"+comboBox2.Text+"'", upConnection);
mohsen622001
یک شنبه 27 تیر 1389, 17:08 عصر
کاملا درست بود ممنون علامت N باعث شد فارسی خونده شود
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.