Problem med MSSQL i C#/Visual Studio
Tjena, jag har skrivit ett program i C# där jag ska spara data i en databas. Databas filen ligger i projektmappen, men när jag skriver data till den sparas den i en databas fil som ligger i debug mappen. Detta gör så jag kan inte kolla vad för data som är sparad i databasen vilket leder till att jag inte vet om det sparas eller inte. Jag har en temporär lösning genom att skapa ett nytt projekt, importera rätt db fil som new data source och kolla dbTables values. Finns det någon smidigare lösning på detta?
Nästa fråga handlar om att summera data från databasen. När jag summerar data för att räkna ut lön fungerar det fint, här är den koden:
int month = comboBox1.SelectedIndex + 1;
connection = new SqlConnection(connectionString);
connection.Open();
string query = "SELECT SUM (timeSpent) FROM timeReport WHERE month = @month AND username = @user";
SqlCommand command = new SqlCommand(query, connection);
command.Parameters.Add(new SqlParameter("@month", month));
command.Parameters.Add(new SqlParameter("@user", Login.currentUser));
SqlDataReader reader = command.ExecuteReader();
try
{
while (reader.Read())
{
double minutesWorked = (double)reader.GetInt32(0);
double hoursWorked = minutesWorked / 60;
hoursWorked = Math.Round(hoursWorked, 2);
double salary = hoursWorked * 100 * 0.66;
salary = Math.Round(salary, 2);
MessageBox.Show("You've worked " + hoursWorked + " hours during " + months[month - 1] + " and your salary is " + salary.ToString() + " kr", "Your salary from " + months[month - 1]);
}
}
finally
{
reader.Close();
}
den funkar fint och jag får ut rätt data, men när jag ska summera data för att räkna ut tiden spenderat per ämne har jag denna kod, enligt mig borde den fungera eftersom den är gjord på typ samma sätt som koden ovan, men jag får error om att den hämtar values som är NULL och allt går sönder. Det är den här koden:
int math = 0;
int english = 0;
int programming = 0;
string[] subjects = new string[] { "Math", "English", "Programming" };
connection = new SqlConnection(connectionString);
connection.Open();
string query = "SELECT SUM (timeSpent) FROM timeReport WHERE week = @week AND username = @user AND subject = @subject";
SqlCommand command = new SqlCommand(query, connection);
command.Parameters.Add(new SqlParameter("@week", Form1.selectedWeek));
command.Parameters.Add(new SqlParameter("@user", Login.currentUser));
command.Parameters.Add(new SqlParameter("@subject", subjects[0]));
SqlDataReader reader = command.ExecuteReader();
try
{
while (reader.Read())
{
math = reader.GetInt32(0);
}
}
finally
{
reader.Close();
}
Den kraschar på "math = reader.GetInt32(0);". Om nån skulle kunna förklara vad som är fel skulle det uppskattas djupt. I min db har jag en rad där alla kolumner har värdet null, men jag vet inte hur man får bort den, och jag vet inte om det är den som förstör eftersom koden för att räkna ut lön fungerar och då finns ju den raden där.