gpt4 book ai didi

java - SQLITE_ERROR SQL 错误或缺少数据库( "VALUES"附近 : syntax error)

转载 作者:可可西里 更新时间:2023-11-01 02:43:19 26 4
gpt4 key购买 nike

我有以下代码,它给了我这个错误。我需要将通过 TCP 连接传输的值显示到数据库中。帮助?当我评论 Class.forName("org.sqlite.JDBC") 和 conexiune.setAutoCommit(false) 之间的行时;以及 IF 中从 String s 到 conexiume.commit() 的那些,它运行良好,似乎客户端和服务器之间的连接正常。

这是在服务器类中运行的方法:

public void run() {
while(true)
{
try
{

soc=server.accept();
System.out.println("OK!");
ObjectInputStream ois=new ObjectInputStream(soc.getInputStream());

Class.forName("org.sqlite.JDBC");
Connection conexiune=DriverManager.getConnection("jdbc:sqlite:BazaDeDate.db");
System.out.println("Conexiunea la baza de date s-a realizat cu succes!");
Statement comanda=(Statement) conexiune.createStatement();
conexiune.setAutoCommit(false);


Object obj=ois.readObject();
if(obj instanceof AvionPasageri)
{
AvionPasageri ap=(AvionPasageri)obj;
System.out.println(ap.toString());
String s="";

for(String sir : ap.getCnpPasageri())
{
s+=sir;
}
((java.sql.Statement) comanda).executeUpdate("INSERT INTO AvionPasageri(serie,tonaj,marca,capacitate,cnp VALUES(' "
+ap.getSerie()+"', '"+ap.getTonaj()+"', '"+ap.getMarca()+"', '"+ap.getCapacitate()
+"', '"+s+"')");
System.out.println("Inserat!");
conexiune.commit();

}
else if(obj instanceof AvionCargo)
{

AvionCargo ac=(AvionCargo)obj;
System.out.println(ac.toString());
String s="";

for(String sir: ac.getSerieMarfuri())
{
s+=sir;
}
((java.sql.Statement) comanda).executeUpdate("INSERT INTO AvionPasageri(serie,tonaj,marca,capacitate,serii VALUES('"
+ac.getSerie()+"', '"+ac.getTonaj()+"', '"+ac.getMarca()+"', '"+ac.getCapacitate()
+"', '"+s+"')");
System.out.println("Inserat!");
conexiune.commit();
}

conexiune.close();
soc.close();


} catch (IOException e) {

e.printStackTrace();
} catch (ClassNotFoundException e) {

e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}

}

我这里还有数据库类:

public class CreareBazaDeDate 
{

public static void main(String[] args) throws ClassNotFoundException, SQLException
{
Class.forName("org.sqlite.JDBC");

Connection conexiune=DriverManager.getConnection("jdbc:sqlite:BazaDeDate.db");

Statement comanda=(Statement) conexiune.createStatement();

conexiune.setAutoCommit(false);
((java.sql.Statement) comanda).executeUpdate("CREATE TABLE AvionPasageri( serie string, tonaj float, marca string, capacitate float, cnp string)");
((java.sql.Statement) comanda).executeUpdate("CREATE TABLE AvionCargo( serie string, tonaj float, marca string, capacitate float, marfa string)");

conexiune.commit();
conexiune.close();
}
}

如果对您有帮助,这是服务器类的第一部分,在 run() 之前:

public class Server implements Runnable
{
public ServerSocket server;
public Socket soc;

public static void main(String[] args)
{
Thread t=new Thread(new Server());
t.start();
}

public Server()
{
try
{
server=new ServerSocket(5200);
}
catch(IOException e)
{
e.printStackTrace();
}
}

你能帮我找出问题所在吗?

最佳答案

你需要有一个右括号

INSERT INTO AvionPasageri(serie,tonaj,marca,capacitate,cnp VALUES

关于java - SQLITE_ERROR SQL 错误或缺少数据库( "VALUES"附近 : syntax error),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44860528/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com