diff --git a/CHANGELOG.txt b/CHANGELOG.txt
index 4bea62191b4053c210949b9994bf7620aac3c742..af8f3d431848a0d78321f51c775dd9bc1f185a88 100644
--- a/CHANGELOG.txt
+++ b/CHANGELOG.txt
@@ -5,9 +5,15 @@ SMARTTIME
 =========
 
 >>> start-date: 09.01.15
->>> status-date: 27.05.17
+>>> status-date: 31.05.17
 ____________________________________________________
 
+v.5.1-1 - (31)
+===============
+
+-bugfixes
+>>> end-work: 31.05.17
+
 v.5.1-0 - (30)
 ===============
 
diff --git a/README.md b/README.md
index c6798180f51849579185bb17cce739b552de75b5..b308f7f1139b024e55787c3133516ab4bf5f4489 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
 # SmartTime
 
 - startdate: 09.01.15
-- current version: 5.1.0 (30) - 27.05.17
+- current version: 5.1.1 (31) - 31.05.17
 
 ### Description
 
diff --git a/build/SmartTime.exe b/build/SmartTime.exe
index 2a9e160a3e51f345989dbf368892c27fc7e44f12..8b9a7756dcc27b8e790c1ab9b9caeb000f881260 100644
Binary files a/build/SmartTime.exe and b/build/SmartTime.exe differ
diff --git a/build/SmartTime.jar b/build/SmartTime.jar
index 949d1710d47486171bf10d92cd4aeeef85e3e67e..3dba4739ed35b400631727da1d589611bbdfd646 100644
Binary files a/build/SmartTime.jar and b/build/SmartTime.jar differ
diff --git a/src/charts/BarChartGenerator.java b/src/charts/BarChartGenerator.java
index 10d39ff3834fea260a188f8022c094e723321e92..62ba6806e282725a5b3cbe79c19677261707da0b 100644
--- a/src/charts/BarChartGenerator.java
+++ b/src/charts/BarChartGenerator.java
@@ -57,7 +57,7 @@ public class BarChartGenerator
 		final CategoryAxis xAxis = new CategoryAxis();
 		final NumberAxis yAxis = new NumberAxis();
 		final BarChart<String, Number> chart = new BarChart<String, Number>(xAxis, yAxis);
-		chart.setTitle(project + " - " + task + " - " + Utils.getMonthName(month) + " " + year);
+		chart.setTitle(project + " - " + task + " - " + Utils.getMonthName(month - 1) + " " + year);
 		xAxis.setLabel("Tag");
 		yAxis.setLabel("Zeit in Minuten");
 		chart.setCategoryGap(2);
diff --git a/src/charts/ChartGUIController.java b/src/charts/ChartGUIController.java
index d6550ffc945c2e2e282ef99f540b6e6dd0f6799c..d385b4fc1f8227bae43b340526522bfc757b7b60 100644
--- a/src/charts/ChartGUIController.java
+++ b/src/charts/ChartGUIController.java
@@ -467,37 +467,35 @@ public class ChartGUIController
 	
 	private ArrayList<String> getTasks(ArrayList<LogObject> objects)
 	{
-		HashSet<String> tasks2 = new HashSet<String>();
+		HashSet<String> tasks = new HashSet<String>();
 		for(LogObject current : objects)
 		{
-			tasks2.add(String.valueOf(current.getTask()));
+			tasks.add(String.valueOf(current.getTask()));
 		}
-		return new ArrayList<String>(tasks2);
+		return new ArrayList<String>(tasks);
 	}
 
 	private ArrayList<String> getYears(ArrayList<LogObject> objects)
 	{
-		HashSet<String> years2 = new HashSet<String>();
+		HashSet<String> years = new HashSet<String>();
 		for(LogObject current : objects)
 		{
-			years2.add(String.valueOf(current.getYear()));
+			years.add(String.valueOf(current.getYear()));
 		}
-		return new ArrayList<String>(years2);
+		return new ArrayList<String>(years);
 	}
 
 	private ArrayList<String> getMonths(ArrayList<LogObject> objects)
 	{
-		HashSet<Integer> months2 = new HashSet<Integer>();
+		HashSet<Integer> months = new HashSet<Integer>();
 		for(LogObject current : objects)
 		{
-			months2.add(current.getMonth());
+			months.add(current.getMonth());
 		}
 
-		ArrayList<Integer> monthsList = new ArrayList<Integer>(months2);
-
 		ArrayList<String> monthNames = new ArrayList<String>();		
 
-		for(int k = 0; k < monthsList.size(); k++)
+		for(int k = 0; k <  new ArrayList<Integer>(months).size(); k++)
 		{
 		    monthNames.add(Utils.getMonthName(k));
 		}
diff --git a/src/core/SQL.java b/src/core/SQL.java
index f42367342f15d502332361b232ff9411281619b4..9857023dfdd43154333a7a3987f0712fe44c5edc 100644
--- a/src/core/SQL.java
+++ b/src/core/SQL.java
@@ -157,15 +157,19 @@ public class SQL
 	public ArrayList<LogObject> getByProjectAndTaskAndYear(String projectName, String taskName, int year) throws Exception
 	{
 		Connection c = null;
-		Statement stmt = null;
-
 		Class.forName("org.sqlite.JDBC");
 		c = DriverManager.getConnection("jdbc:sqlite:" + path);
-		c.setAutoCommit(false);
-
-		stmt = c.createStatement();
-		ResultSet rs = stmt.executeQuery("SELECT * FROM SMARTTIME WHERE PROJECT='" + projectName + "' AND TASK='" + taskName + "' AND YEAR='" + year + "'ORDER BY MONTH DESC, DAY DESC, STARTTIME DESC;");
+		c.setAutoCommit(false); 
+		
+		String sql = "SELECT * FROM SMARTTIME WHERE PROJECT= ? AND TASK= ? AND YEAR= ? ORDER BY MONTH DESC, DAY DESC, STARTTIME DESC;";
 
+		PreparedStatement stmt = c.prepareStatement(sql);
+		stmt.setString(1, projectName);
+		stmt.setString(2, taskName);
+		stmt.setInt(3, year);
+		
+		ResultSet rs = stmt.executeQuery();		
+		
 		ArrayList<LogObject> logObjects = extractLogObjects(rs);
 
 		rs.close();
@@ -178,15 +182,19 @@ public class SQL
 	public ArrayList<LogObject> getByProjectAndTaskAndYearAndMonth(String projectName, String taskName, int year, int month) throws Exception
 	{
 		Connection c = null;
-		Statement stmt = null;
-
 		Class.forName("org.sqlite.JDBC");
 		c = DriverManager.getConnection("jdbc:sqlite:" + path);
 		c.setAutoCommit(false);
-
-		stmt = c.createStatement();
-		ResultSet rs = stmt.executeQuery("SELECT * FROM SMARTTIME WHERE PROJECT='" + projectName + "' AND TASK='" + taskName + "' AND YEAR='" + year + "' AND MONTH='" + month + "'ORDER BY DAY DESC, STARTTIME DESC;");
-
+		
+		String sql = "SELECT * FROM SMARTTIME WHERE PROJECT= ? AND TASK= ? AND YEAR= ? AND MONTH= ? ORDER BY DAY DESC, STARTTIME DESC;";
+		PreparedStatement stmt = c.prepareStatement(sql);
+		stmt.setString(1, projectName);
+		stmt.setString(2, taskName);
+		stmt.setInt(3, year);
+		stmt.setInt(4, month);
+		
+		ResultSet rs = stmt.executeQuery();
+		
 		ArrayList<LogObject> logObjects = extractLogObjects(rs);
 
 		rs.close();
@@ -198,16 +206,19 @@ public class SQL
 
 	public ArrayList<LogObject> getByProjectAndYear(String projectName, int year) throws Exception
 	{
-		Connection c = null;
-		Statement stmt = null;
+		Connection c = null;		
 
 		Class.forName("org.sqlite.JDBC");
 		c = DriverManager.getConnection("jdbc:sqlite:" + path);
 		c.setAutoCommit(false);
-
-		stmt = c.createStatement();
-		ResultSet rs = stmt.executeQuery("SELECT * FROM SMARTTIME WHERE PROJECT='" + projectName + "' AND YEAR='" + year + "'ORDER BY MONTH DESC, DAY DESC, STARTTIME DESC;");
-
+		
+		String sql = "SELECT * FROM SMARTTIME WHERE PROJECT= ? AND YEAR= ? ORDER BY MONTH DESC, DAY DESC, STARTTIME DESC;";
+		PreparedStatement stmt = c.prepareStatement(sql);
+		stmt.setString(1, projectName);
+		stmt.setInt(2, year);
+		
+		ResultSet rs = stmt.executeQuery();
+		
 		ArrayList<LogObject> logObjects = extractLogObjects(rs);
 
 		rs.close();
@@ -220,15 +231,19 @@ public class SQL
 	public ArrayList<LogObject> getByProjectAndYearAndMonth(String projectName, int year, int month) throws Exception
 	{
 		Connection c = null;
-		Statement stmt = null;
-
 		Class.forName("org.sqlite.JDBC");
 		c = DriverManager.getConnection("jdbc:sqlite:" + path);
 		c.setAutoCommit(false);
 
-		stmt = c.createStatement();
-		ResultSet rs = stmt.executeQuery("SELECT * FROM SMARTTIME WHERE PROJECT='" + projectName + "' AND YEAR='" + year + "' AND MONTH='" + month + "'ORDER BY DAY DESC, STARTTIME DESC;");
+		String sql = "SELECT * FROM SMARTTIME WHERE PROJECT= ? AND YEAR= ? AND MONTH= ? ORDER BY DAY DESC, STARTTIME DESC;";
 
+		PreparedStatement stmt = c.prepareStatement(sql);
+		stmt.setString(1, projectName);
+		stmt.setInt(2, year);
+		stmt.setInt(3, month);
+		
+		ResultSet rs = stmt.executeQuery();
+		
 		ArrayList<LogObject> logObjects = extractLogObjects(rs);
 
 		rs.close();
@@ -241,15 +256,17 @@ public class SQL
 	public ArrayList<LogObject> getByYear(int year) throws Exception
 	{
 		Connection c = null;
-		Statement stmt = null;
-
 		Class.forName("org.sqlite.JDBC");
 		c = DriverManager.getConnection("jdbc:sqlite:" + path);
 		c.setAutoCommit(false);
 
-		stmt = c.createStatement();
-		ResultSet rs = stmt.executeQuery("SELECT * FROM SMARTTIME WHERE YEAR='" + year + "' ORDER BY PROJECT, TASK");
+		String sql = "SELECT * FROM SMARTTIME WHERE YEAR= ? ORDER BY PROJECT, TASK;";
 
+		PreparedStatement stmt = c.prepareStatement(sql);	
+		stmt.setInt(1, year);
+		
+		ResultSet rs = stmt.executeQuery();
+		
 		ArrayList<LogObject> logObjects = extractLogObjects(rs);
 
 		rs.close();
@@ -262,15 +279,18 @@ public class SQL
 	public ArrayList<LogObject> getByYearAndMonth(int year, int month) throws Exception
 	{
 		Connection c = null;
-		Statement stmt = null;
-
 		Class.forName("org.sqlite.JDBC");
 		c = DriverManager.getConnection("jdbc:sqlite:" + path);
 		c.setAutoCommit(false);
+		
+		String sql = "SELECT * FROM SMARTTIME WHERE YEAR= ? AND MONTH= ? ORDER BY PROJECT, TASK;";
 
-		stmt = c.createStatement();
-		ResultSet rs = stmt.executeQuery("SELECT * FROM SMARTTIME WHERE YEAR='" + year + "' AND MONTH='" + month + "'ORDER BY PROJECT, TASK;");
-
+		PreparedStatement stmt = c.prepareStatement(sql);	
+		stmt.setInt(1, year);
+		stmt.setInt(2, month);
+		
+		ResultSet rs = stmt.executeQuery();
+		
 		ArrayList<LogObject> logObjects = extractLogObjects(rs);
 
 		rs.close();
@@ -333,15 +353,25 @@ public class SQL
 
 	public void update(LogObject oldLog, LogObject newLog) throws Exception
 	{
-		Connection c = null;
-		Statement stmt = null;
+		Connection c = null;		
 		Class.forName("org.sqlite.JDBC");
 		c = DriverManager.getConnection("jdbc:sqlite:" + path);
-
-		stmt = c.createStatement();
-		String sql = "UPDATE SMARTTIME SET PROJECT='" + newLog.getProject() + "' , TASK='" + newLog.getTask() + "' " + "WHERE YEAR='" + oldLog.getYear() + "' AND MONTH='" + oldLog.getMonth() + "' AND DAY='" + oldLog.getDay() + "' AND STARTTIME='" + oldLog.getStartTime() + "' AND ENDTIME='"
-				+ oldLog.getEndTime() + "' AND DURATION='" + oldLog.getDuration() + "' AND PROJECT='" + oldLog.getProject() + "' AND TASK='" + oldLog.getTask() + "';";
-		stmt.executeUpdate(sql);
+		
+		String sql = "UPDATE SMARTTIME SET PROJECT= ? , TASK= ? WHERE YEAR= ? AND MONTH= ? AND DAY= ? AND STARTTIME= ? AND ENDTIME= ? AND DURATION= ? AND PROJECT= ? AND TASK= ?;";
+		
+		PreparedStatement stmt = c.prepareStatement(sql);
+		stmt.setString(1, newLog.getProject());
+		stmt.setString(2, newLog.getTask());
+		stmt.setInt(3, oldLog.getYear());
+		stmt.setInt(4, oldLog.getMonth());
+		stmt.setInt(5, oldLog.getDay());
+		stmt.setString(6, oldLog.getStartTime());
+		stmt.setString(7, oldLog.getEndTime());
+		stmt.setLong(8, oldLog.getDuration());
+		stmt.setString(9, oldLog.getProject());
+		stmt.setString(10, oldLog.getTask());
+		
+		stmt.executeUpdate();
 		stmt.close();
 
 		c.close();
@@ -350,14 +380,22 @@ public class SQL
 	public void delete(LogObject log) throws Exception
 	{
 		Connection c = null;
-		Statement stmt = null;
 		Class.forName("org.sqlite.JDBC");
 		c = DriverManager.getConnection("jdbc:sqlite:" + path);
-
-		stmt = c.createStatement();
-		String sql = "DELETE FROM SMARTTIME " + "WHERE YEAR='" + log.getYear() + "' AND MONTH='" + log.getMonth() + "' AND DAY='" + log.getDay() + "' AND STARTTIME='" + log.getStartTime() + "' AND ENDTIME='" + log.getEndTime() + "' AND DURATION='" + log.getDuration() + "' AND PROJECT='"
-				+ log.getProject() + "' AND TASK='" + log.getTask() + "';";
-		stmt.executeUpdate(sql);
+		
+		String sql = "DELETE FROM SMARTTIME " + "WHERE YEAR= ? AND MONTH= ? AND DAY= ? AND STARTTIME= ? AND ENDTIME= ? AND DURATION= ? AND PROJECT= ? AND TASK= ?;";
+	
+		PreparedStatement stmt = c.prepareStatement(sql);		
+		stmt.setInt(1, log.getYear());
+		stmt.setInt(2, log.getMonth());
+		stmt.setInt(3, log.getDay());
+		stmt.setString(4, log.getStartTime());
+		stmt.setString(5, log.getEndTime());
+		stmt.setLong(6, log.getDuration());
+		stmt.setString(7, log.getProject());
+		stmt.setString(8, log.getTask());
+		
+		stmt.execute();
 		stmt.close();
 
 		c.close();
diff --git a/src/core/Utils.java b/src/core/Utils.java
index 9b3570581aa1f0bae1dac36b2c2acff319b09c7c..a43ac18a83847197ee8594d73fcd7394f530a725 100644
--- a/src/core/Utils.java
+++ b/src/core/Utils.java
@@ -23,7 +23,7 @@ public class Utils
 
     public static String getMonthName(int monthNumberOneIndexed)
     {
-        return AVAILABLE_MONTH_NAMES[monthNumberOneIndexed - 1];
+        return AVAILABLE_MONTH_NAMES[monthNumberOneIndexed];
     }    
     
     public static int getMonthNumber(String monthName)
diff --git a/src/userInterface/_de.properties b/src/userInterface/_de.properties
index 038537ad5224ca84f66af2971887373661b6f1ad..c9e13b21cab3851ce82af581614b37bb1c69f603 100644
--- a/src/userInterface/_de.properties
+++ b/src/userInterface/_de.properties
@@ -1,7 +1,7 @@
 app.name=SmartTime
-version.code=30
-version.name=5.1.0
-version.date=27.05.17
+version.code=31
+version.name=5.1.1
+version.date=31.05.17
 
 folder=Deadlocker/SmartTime
 credits=Icon made by Vectors Market from www.flaticon.com (licensed by CC 3.0 BY)
\ No newline at end of file