带有问号的语句插入中的SQLite错误

时间:2017-07-08 16:36:18

标签: sql sqlite insert

您好我正在编写一个在DB SQLite中插入值的查询。

首先,我从记录中读取并搜索了两个值,例如,然后我创建了一个新表并插入了新值。

我的代码段如下:

try
  {
    Class.forName("org.sqlite.JDBC");
    Connection con=DriverManager.getConnection("jdbc:sqlite:tests.db");
    con.setAutoCommit(false);
    Statement st=con.createStatement();
    st.executeUpdate("delete msearch");
    ResultSet res=st.executeQuery("select * from newmobile_details");
    Boolean rec=res.next();
    if(!rec)
    {
      JOptionPane.showMessageDialog(null,"لايوجد سجلات");
    }
    else
    {
      do
      {
        String mid=res.getString(1);
        String model=res.getString(2);
        String name=res.getString(3);
        int price=res.getInt(4);
        String pcolor=res.getString(5);
        String imei=res.getString(6);
        java.sql.Date date=res.getDate(7);
        String access=res.getString(8);

        if(mname.equalsIgnoreCase(name))
        {
          PreparedStatement prp=con.prepareStatement("insert into msearch values(?,?,?,?,?,?,?,?)");
          prp.setString(1,mid);
          prp.setString(2,model);
          prp.setString(3,name);
          prp.setInt(4,price);
          prp.setString(5,pcolor);
          prp.setString(6,imei);
          prp.setDate(7,date);
          prp.setString(8,access);

          prp.executeUpdate();

          System.out.println("iam inside2");
          rows++;

          b=1;
          jTextField2.setText("");
        }


     }while(res.next());

     if(b==0)
     {
       JOptionPane.showMessageDialog(null,"لم يتم العثور على الموبايل ");
       jTextField2.setText("");
     }
   }
   con.commit();
   con.close();
 }

 catch(Exception e)
 {
   JOptionPane.showMessageDialog(null,"The error is1:" +e);
 }

我只得到以下例外:

  

错误是1:sql错误或msearch语法错误中缺少数据库

1 个答案:

答案 0 :(得分:0)

Larry提出了一个很好的观点并且更仔细地查看了您的代码我相信问题在于声明

st.executeUpdate("delete msearch");

似乎在说你应该使用数据库名称来限定msearch

这是插入语句的语法

INSERT INTO TABLE_NAME (c1, c2, c3,...cN)  
VALUES (v1, v2, v3,...vN);

您提供列名列表和值列表。

您没有列名列表。

这无效。