diff --git a/jdbc/src/main/java/org/apache/karaf/jdbc/command/parsing/JdbcParser.java b/jdbc/src/main/java/org/apache/karaf/jdbc/command/parsing/JdbcParser.java
index 3aeb972..cd52ce9 100644
--- a/jdbc/src/main/java/org/apache/karaf/jdbc/command/parsing/JdbcParser.java
+++ b/jdbc/src/main/java/org/apache/karaf/jdbc/command/parsing/JdbcParser.java
@@ -37,6 +37,7 @@
         GogoParser parser = new GogoParser(command, cursor);
         List<String> args = parser.statement();
         List<String> nargs = new ArrayList<>();
+        String quote = "";
         int state = 0;
         for (String arg : args) {
             switch (state) {
@@ -55,6 +56,7 @@
             // first sql fragment
             case 2:
                 nargs.add(arg);
+                quote = "\"";
                 state = 3;
                 break;
             // addtional sql
@@ -63,11 +65,11 @@
                 break;
             }
         }
-        nargs.set(nargs.size() - 1, "\"" + nargs.get(nargs.size() - 1) + "\"");
+        nargs.set(nargs.size() - 1, quote + nargs.get(nargs.size() - 1) + quote);
         return new CommandLineImpl(
                 nargs.toArray(new String[nargs.size()]),
                 parser.cursorArgumentIndex(),
-                Math.max(parser.argumentPosition(), nargs.size()),
+                parser.argumentPosition(),
                 cursor,
                 command.substring(0, parser.position()));
     }
diff --git a/jdbc/src/test/java/org/apache/karaf/jdbc/command/parsing/JdbcParserTest.java b/jdbc/src/test/java/org/apache/karaf/jdbc/command/parsing/JdbcParserTest.java
new file mode 100644
index 0000000..a763e79
--- /dev/null
+++ b/jdbc/src/test/java/org/apache/karaf/jdbc/command/parsing/JdbcParserTest.java
@@ -0,0 +1,60 @@
+package org.apache.karaf.jdbc.command.parsing;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import static org.junit.Assert.*;
+
+import org.apache.karaf.shell.api.console.CommandLine;
+import org.junit.Before;
+import org.junit.Test;
+
+public class JdbcParserTest {
+
+    private JdbcParser jdbcParser;
+
+    @Before
+    public void setUp() {
+        jdbcParser = new JdbcParser();
+    }
+
+    @Test
+    public void testParseOption() {
+        CommandLine commandLine = jdbcParser.parse(null, "jdbc:query --help", 12);
+
+        String[] expecteds = { "jdbc:query", "--help" };
+        String[] actuals = commandLine.getArguments();
+        assertArrayEquals(expecteds, actuals);
+    }
+
+    @Test
+    public void testParseDataSource() {
+        CommandLine commandLine = jdbcParser.parse(null, "jdbc:query jdbc/name", 12);
+
+        String[] expecteds = { "jdbc:query", "jdbc/name" };
+        String[] actuals = commandLine.getArguments();
+        assertArrayEquals(expecteds, actuals);
+    }
+
+    @Test
+    public void testParseSql() {
+        CommandLine commandLine = jdbcParser.parse(null, "jdbc:query jdbc/name select * from table where id = 1", 12);
+
+        String[] expecteds = { "jdbc:query", "jdbc/name", "\"select * from table where id = 1\"" };
+        String[] actuals = commandLine.getArguments();
+        assertArrayEquals(expecteds, actuals);
+    }
+}
