gpt4 book ai didi

java - 如何使用 UCanAccess 插入行?

转载 作者:行者123 更新时间:2023-11-29 06:55:13 25 4
gpt4 key购买 nike

我正在使用 Windows 8 64 位和 NetBeans 8.1、Java 8

我知道在 Java 8 中删除了 jdbc-odbc 桥。我正在使用 ucanaccess 但我有一个问题

我正在尝试使用此代码从 MS Access 读取数据

(1)

package javaapplication1;
/**
*
* @author JAY
*/
import java.sql.*;

public class JavaApplication1 {
public static void main(String[] args) {

Connection cn;
Statement st;
ResultSet re;
try{

Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
cn=DriverManager.getConnection("jdbc:ucanaccess://D://J//DB//database.accdb");
st = cn.createStatement();
re=st.executeQuery("select * from db1");
while(re.next())
{
System.out.println(re.getString(1));
}
catch(ClassNotFoundException | SQLException e)
{
System.out.println(e);
}
}
}

我已经在msaccess中手动插入了数据我们搞定了

运行:

a
a
b
BUILD SUCCESSFUL (total time: 1 second)

但是当我尝试使用以下 Java 代码插入数据时

(2)

package javaapplication1;
/**
*
* @author JAY
*/
import java.sql.*;

public class JavaApplication1 {
public static void main(String[] args) {

Connection cn;
Statement st;
ResultSet re;
try{

Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
cn=DriverManager.getConnection("jdbc:ucanaccess://D://J//DB//database.accdb");
st = cn.createStatement();
re=st.executeQuery("insert into db1 values('a','a')");

System.out.println("inserted")

catch(ClassNotFoundException | SQLException e)
{
System.out.println(e);
}
}
}

我遇到了这个错误:

net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::3.0.3.1 java.lang.NullPointerException java.lang.NullPointerException
BUILD SUCCESSFUL (total time: 0 seconds)

第三种方式尝试后

(3)

/**
*
* @author JAY
*/
import java.sql.*;

public class JavaApplication1 {
public static void main(String[] args) {

Connection cn;
Statement st;
ResultSet re;
String ID ="username";
String NAME="password";


try{

Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
cn=DriverManager.getConnection("jdbc:ucanaccess://D://J//DB//database.accdb");
st = cn.createStatement();
String q ="insert into db1 values('"+ID+"','"+NAME+"'))";
st.executeQuery(q);

System.out.println("inserted")

catch(ClassNotFoundException | SQLException e)
{
System.out.println(e);
}

}
}

我尝试了很多不同的插入方式:

String q ="insert into db1 (ID,NAME) values('"+ID+"','"+NAME+"'))";

当我评论已经通过上侧并尝试插入直接值时

String q ="insert into db1 (ID,NAME) values('a','b'))";

但是出现了这个错误

run:
net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::3.0.3.1 unexpected token: )
BUILD SUCCESSFUL (total time: 0 seconds)

最佳答案

您正在尝试使用 executeQuery 执行 INSERT,但 executeQuery 仅适用于 SELECT 查询。尝试改用 executeUpdate

String q = "INSERT INTO db1 ([ID], [NAME]) VALUES (?, ?)";
PreparedStatement st = cn.prepareStatement (q);
st.setString(1, "a");
st.setString(2, "b");
st.executeUpdate();

关于java - 如何使用 UCanAccess 插入行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35837222/

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