如何从 java 应用程序对 google spanner 执行 DML(更新、插入、删除)操作?
How to perform DML(Update, Insert, Delete) operations on google spanner from a java application?
需要你的帮助!
我正在尝试使用驱动程序 class(com.simba.cloudspanner.core.jdbc42.CloudSpanner42Driver) 执行 DML 操作,但出现
这样的异常
"Caused by: shaded.com.google.cloud.spanner.SpannerException: INVALID_ARGUMENT: DML statements(INSERT, UPDATE and DELETE) are not supported."
但是 SELECT 查询工作正常。下面是我的 java 代码。
请告诉我如何从 java 应用程序对扳手执行 DML 操作。
我试过Mutation.newInsertBuilder
、Mutation.newUpdateBuilder
、Mutation.delete
使用com.google.cloud.spanner.Mutation; libraries
、实现DML操作,但我实际上是在寻找对于某种实现,用户可以使用 运行 SQL 语句来执行 DML 操作。
public class SimbuDriverInsert {
static final String CONNECTION_URL = "jdbc:cloudspanner://localhost;Project=optimistic-leaf-197820;Instance=testspanner01;Database=students;PvtKeyPath=C:\MuleWorkspace\test-driver\src\main\resources\gcloudPrivateKey.json";
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try{
Class.forName("com.simba.cloudspanner.core.jdbc42.CloudSpanner42Driver");
System.out.println("Connecting to database...");
conn = DriverManager.getConnection(CONNECTION_URL);
stmt = conn.createStatement();
String sql = "INSERT INTO studentdetails (id,age,name) " +
"VALUES (100, 30, 'Ali')";
stmt.executeUpdate(sql);
System.out.println("Inserted record into the table...");
stmt.close();
conn.close();
}catch(SQLException se){
//Handle errors for JDBC
se.printStackTrace();
}catch(Exception e){
//Handle errors for Class.forName
e.printStackTrace();
}
}//end main
}
Oracle 提供的官方 JDBC 驱动程序(连同 Simba)不支持 DML 和 DDL 语句。 This open source driver does support both。如果您在项目中包含此驱动程序并更改以下行
Class.forName("com.simba.cloudspanner.core.jdbc42.CloudSpanner42Driver");
进入
Class.forName("nl.topicus.jdbc.CloudSpannerDriver");
代码应该可以工作。该驱动程序使用与官方驱动程序相同的 URL 语法,但也增加了一些额外的可能性。 Have a look at the Wiki page 驱动程序的详细信息。
驱动可以添加为maven依赖或者downloaded from the releases page of the project.
在此处查看有关如何使用驱动程序的更多示例:http://www.googlecloudspanner.com/ 与不同的框架和工具。
需要你的帮助!
我正在尝试使用驱动程序 class(com.simba.cloudspanner.core.jdbc42.CloudSpanner42Driver) 执行 DML 操作,但出现
这样的异常"Caused by: shaded.com.google.cloud.spanner.SpannerException: INVALID_ARGUMENT: DML statements(INSERT, UPDATE and DELETE) are not supported."
但是 SELECT 查询工作正常。下面是我的 java 代码。
请告诉我如何从 java 应用程序对扳手执行 DML 操作。
我试过Mutation.newInsertBuilder
、Mutation.newUpdateBuilder
、Mutation.delete
使用com.google.cloud.spanner.Mutation; libraries
、实现DML操作,但我实际上是在寻找对于某种实现,用户可以使用 运行 SQL 语句来执行 DML 操作。
public class SimbuDriverInsert {
static final String CONNECTION_URL = "jdbc:cloudspanner://localhost;Project=optimistic-leaf-197820;Instance=testspanner01;Database=students;PvtKeyPath=C:\MuleWorkspace\test-driver\src\main\resources\gcloudPrivateKey.json";
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try{
Class.forName("com.simba.cloudspanner.core.jdbc42.CloudSpanner42Driver");
System.out.println("Connecting to database...");
conn = DriverManager.getConnection(CONNECTION_URL);
stmt = conn.createStatement();
String sql = "INSERT INTO studentdetails (id,age,name) " +
"VALUES (100, 30, 'Ali')";
stmt.executeUpdate(sql);
System.out.println("Inserted record into the table...");
stmt.close();
conn.close();
}catch(SQLException se){
//Handle errors for JDBC
se.printStackTrace();
}catch(Exception e){
//Handle errors for Class.forName
e.printStackTrace();
}
}//end main
}
Oracle 提供的官方 JDBC 驱动程序(连同 Simba)不支持 DML 和 DDL 语句。 This open source driver does support both。如果您在项目中包含此驱动程序并更改以下行
Class.forName("com.simba.cloudspanner.core.jdbc42.CloudSpanner42Driver");
进入
Class.forName("nl.topicus.jdbc.CloudSpannerDriver");
代码应该可以工作。该驱动程序使用与官方驱动程序相同的 URL 语法,但也增加了一些额外的可能性。 Have a look at the Wiki page 驱动程序的详细信息。
驱动可以添加为maven依赖或者downloaded from the releases page of the project.
在此处查看有关如何使用驱动程序的更多示例:http://www.googlecloudspanner.com/ 与不同的框架和工具。