diff --git a/src/main/java/net/floodlightcontroller/firewall/Firewall.java b/src/main/java/net/floodlightcontroller/firewall/Firewall.java
index 2d7d4d85746319baf7da7958a1741cf42f07c87d..d931bb1b12e8451d2239e075ee6fcf66dcec382e 100644
--- a/src/main/java/net/floodlightcontroller/firewall/Firewall.java
+++ b/src/main/java/net/floodlightcontroller/firewall/Firewall.java
@@ -349,7 +349,7 @@ public class Firewall implements IFirewallService, IOFMessageListener, IFloodlig
         }
         // add rule to database
         Map<String, Object> entry = new HashMap<String, Object>();
-        entry.put(COLUMN_RULEID, rule.ruleid);
+        entry.put(COLUMN_RULEID, Integer.toString(rule.ruleid));
         entry.put(COLUMN_SWITCHID, Long.toString(rule.switchid));
         entry.put(COLUMN_SRC_INPORT, Short.toString(rule.src_inport));
         entry.put(COLUMN_SRC_MAC, Long.toString(rule.src_mac));
@@ -385,7 +385,7 @@ public class Firewall implements IFirewallService, IOFMessageListener, IFloodlig
             }
         }
         // delete from database
-        storageSource.deleteRow(TABLE_NAME, ruleid);
+        storageSource.deleteRow(TABLE_NAME, Integer.toString(ruleid));
     }
 
     /**
diff --git a/src/test/java/net/floodlightcontroller/firewall/FirewallTest.java b/src/test/java/net/floodlightcontroller/firewall/FirewallTest.java
index 21c54f1f36e2fe8bc5d2b189a1f34aedd500a226..3b1ba90f69212fceadd26e2347c2823dd4903987 100644
--- a/src/test/java/net/floodlightcontroller/firewall/FirewallTest.java
+++ b/src/test/java/net/floodlightcontroller/firewall/FirewallTest.java
@@ -6,6 +6,7 @@ import static org.easymock.EasyMock.replay;
 import static org.easymock.EasyMock.verify;
 
 import java.util.HashMap;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
@@ -222,6 +223,47 @@ public class FirewallTest extends FloodlightTestCase {
         // no rules to match, so firewall should deny
         assertEquals(decision.getRoutingAction(), IRoutingDecision.RoutingAction.DROP);
     }
+    
+    @Test
+    public void testReadRulesFromStorage() throws Exception {
+        // add 2 rules first
+        FirewallRule rule = new FirewallRule();
+        rule.src_inport = 2;
+        rule.src_mac = MACAddress.valueOf("00:00:00:00:00:01").toLong();
+        rule.dst_mac = MACAddress.valueOf("00:00:00:00:00:02").toLong();
+        rule.priority = 1;
+        rule.is_denyrule = true;
+        firewall.addRule(rule);
+        rule = new FirewallRule();
+        rule.src_inport = 3;
+        rule.src_mac = MACAddress.valueOf("00:00:00:00:00:02").toLong();
+        rule.dst_mac = MACAddress.valueOf("00:00:00:00:00:01").toLong();
+        rule.proto_type = IPv4.PROTOCOL_TCP;
+        rule.wildcard_proto_type = false;
+        rule.proto_dstport = 80;
+        rule.priority = 2;
+        rule.is_denyrule = false;
+        firewall.addRule(rule);
+
+        List<FirewallRule> rules = firewall.readRulesFromStorage();
+        // verify rule 1
+        FirewallRule r = rules.get(0);
+        assertEquals(r.src_inport, 2);
+        assertEquals(r.priority, 1);
+        assertEquals(r.src_mac, MACAddress.valueOf("00:00:00:00:00:01").toLong());
+        assertEquals(r.dst_mac, MACAddress.valueOf("00:00:00:00:00:02").toLong());
+        assertEquals(r.is_denyrule, true);
+        // verify rule 2
+        r = rules.get(1);
+        assertEquals(r.src_inport, 3);
+        assertEquals(r.priority, 2);
+        assertEquals(r.src_mac, MACAddress.valueOf("00:00:00:00:00:02").toLong());
+        assertEquals(r.dst_mac, MACAddress.valueOf("00:00:00:00:00:01").toLong());
+        assertEquals(r.proto_type, IPv4.PROTOCOL_TCP);
+        assertEquals(r.proto_dstport, 80);
+        assertEquals(r.wildcard_proto_type, false);
+        assertEquals(r.is_denyrule, false);
+    }
 
     @Test
     public void testRuleInsertionIntoStorage() throws Exception {
@@ -234,7 +276,7 @@ public class FirewallTest extends FloodlightTestCase {
 
         List<Map<String, Object>> rulesFromStorage = firewall.getStorageRules();
         assertEquals(1, rulesFromStorage.size());
-        assertEquals(rulesFromStorage.get(0).get("ruleid"), rule.ruleid);
+        assertEquals(Integer.parseInt((String)rulesFromStorage.get(0).get("ruleid")), rule.ruleid);
     }
 
     @Test
@@ -249,7 +291,7 @@ public class FirewallTest extends FloodlightTestCase {
 
         List<Map<String, Object>> rulesFromStorage = firewall.getStorageRules();
         assertEquals(1, rulesFromStorage.size());
-        assertEquals(rulesFromStorage.get(0).get("ruleid"), rid);
+        assertEquals(Integer.parseInt((String)rulesFromStorage.get(0).get("ruleid")), rid);
 
         // delete rule
         firewall.deleteRule(rid);