PDA

View Full Version : سلام من می خوام یک جستجو با نام کالا کنم



mohsen622001
یک شنبه 27 تیر 1389, 15: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, 15: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, 15:34 عصر
مشکل خطا با کد زیر رفع میشه :


if (reader.Read())
{
if (reader["ghforosh"] != DBNull.Value)
labghymat.Text = reader["ghforosh"].ToString();
}


احتمالا نام را فارسی می خوای جستجو کنی !
در بانک اطلاعاتی نوع فیلد نام رو باید یونیکد انتخاب کنی nchar or nvarchar
ممکنه مشکل از حروفی که تایپ می کنه داره مثلا حرف ی رو ي یا برعکس یا حروف دیگه .
در کل مشکلات کار با فارسی زیاده.

mohsen622001
یک شنبه 27 تیر 1389, 15: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, 15:48 عصر
به جای این دستور :

labghymat.Text = data.ToString();بنویس :


if(data.Read())
{
labghymat.Text = data.ToString();
}

mohsen622001
یک شنبه 27 تیر 1389, 15:49 عصر
این که اصلا دیگه جستجو نکرد درست می گید نام کالا فارسیی

beh_develop
یک شنبه 27 تیر 1389, 15:50 عصر
این خط رو هم اصلاح کن :


var data = upCommand.ExecuteScalar();

به جاش بنویس :

var data = upCommand.ExecuteReader();

voodoo01
یک شنبه 27 تیر 1389, 15:53 عصر
object Data=(object)cmd.ExecuteScalar() ;
string Data=(string)cmd.ExecuteScalar() ;
از اینها هم میتوانی استفاده کنی

mohsen622001
یک شنبه 27 تیر 1389, 15:54 عصر
if(data.Read())
{
labghymat.Text = data.ToString();
}



این اصلا شرط رو چک نمی کنه

mohsen622001
یک شنبه 27 تیر 1389, 15:57 عصر
این مشکل را حل نکرد چون اسم کالا برام نتونست پیدا کنه
این شرط باعث پریدن از چاپ اسم کالا می شه

mohsen622001
یک شنبه 27 تیر 1389, 15:59 عصر
این کار مسئله را دور زد یعنی این شرط فقط باعث شد نام کالا بازم چاپ نشه
فقط خطا نگرفت

beh_develop
یک شنبه 27 تیر 1389, 16: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, 16:08 عصر
کاملا درست بود ممنون علامت N باعث شد فارسی خونده شود