PDA

View Full Version : سوال: خواندن رکوردهایی در تاریخ خاص از دیتابیس



md3848
شنبه 02 شهریور 1398, 10:28 صبح
سلام - من میخوام رکوردهای یک روز خاص رو بخونم - اما مقدار 0 بر میگردونه تابعم - این کدمه :

private int DatabaseThisTableAllHomeThisDay()
{
string timeNow = DateTime.Now.ToString("dd/MM/yyyy");


string sqlString = "SELECT COUNT(*) FROM " + tableName + " WHERE dateRead = '" + timeNow + "'";


MessageBox.Show(sqlString);


return DatabaseNumberRecord(sqlString);
}

private int DatabaseNumberRecord(string sqlString)
{
// DatabaseOpen
string connString = @"Data Source=(localdb)\MSSQLLocalDB; AttachDbFilename=C:\Users\DMF313\Desktop\Leitner\L eitner\Database1.mdf; Integrated Security=True;";
SqlConnection conn = new SqlConnection(connString);
conn.Open();


var command = new SqlCommand(sqlString, conn);
int data = (int)command.ExecuteScalar();


// DatabaseClose
conn.Close();


return data;
}



اینم یک عکس از دیتابیسم و رکوردهای موجودش و همچنین مقدار نمایش داده شده توسط MessageBox.Show ( که در تابع DatabaseThisTableAllHomeThisDay ازش استفاده کردم )

150632

danialafshari
شنبه 02 شهریور 1398, 18:30 عصر
تستش کردم مشکلی نداشت
مطمئن بشید که تاریخ دیتابیس Space نداشته باشه

md3848
شنبه 02 شهریور 1398, 18:37 عصر
مشکلی نداشت؟ جدا؟ میشه با فایل پروژه خودم تست کنید؟ آپ کردم براتون.
http://s4.picofile.com/file/8370428226/Leitner.rar.html
نه space نداره
سولوشن leitner > پروژه leitner > فایل FormReadWords.cs > کدهایی که پیوست کردم رو داخل این فایل مشاهده میکنید.

danialafshari
شنبه 02 شهریور 1398, 18:57 عصر
وقت خوندن پروژه رو ندارم
کل کد به شکل زیر هست و یکی توی دیتابیس ذخیره کردم که عدد 1 رو نشون میده
private int DatabaseThisTableAllHomeThisDay() {
//string timeNow = "21/03/1398";
string timeNow = DateTime.Now.ToString("dd/MM/yyyy");
string sqlString = $"SELECT COUNT(*) FROM tbl1 WHERE dateRead = '{timeNow}'";
MessageBox.Show(sqlString);
return DatabaseNumberRecord(sqlString);
}


private int DatabaseNumberRecord(string sqlString)
{
// DatabaseOpen
string connString = @"Data Source=.\sqlexpress;Initial Catalog=dbTest;Integrated Security=True";
SqlConnection conn = new SqlConnection(connString);
conn.Open();
var command = new SqlCommand(sqlString, conn);
int data = (int)command.ExecuteScalar();
// DatabaseClose
conn.Close();
return data;
}
private void Button4_Click(object sender, EventArgs e)
{
MessageBox.Show(DatabaseThisTableAllHomeThisDay(). ToString());
}

md3848
یک شنبه 03 شهریور 1398, 09:26 صبح
خب راه حل رو پیدا کردم.
SQL DateTime != C#‎‎‎‎‎‎ Datetime
https://stackoverflow.com/a/16078824/10862935

اینم کدی که ازش جواب گرفتم :


// DatabaseOpen
string connString = @"Data Source=(localdb)\MSSQLLocalDB; AttachDbFilename=C:\Users\DMF313\Desktop\Leitner\L eitner\Database1.mdf; Integrated Security=True;";
SqlConnection conn = new SqlConnection(connString);
conn.Open();


string timeToday = DateTime.Now.ToString("dd/MM/yyyy");
string sqlString = "SELECT COUNT(*) FROM " + tableName + " WHERE dateRead = @newDate;";


SqlCommand command = new SqlCommand(sqlString, conn);
command.Parameters.Add("@newDate", SqlDbType.Date).Value = timeToday;


// Read Data
int data = (int)command.ExecuteScalar();


// DatabaseClose
conn.Close();


// Return Data

return data;


ممنون از آقای danialafshari (https://barnamenevis.org/member.php?68467-danialafshari)