我有两个表存储在 Oracle 数据库中。其中之一存储客户数据,例如姓名和地址。然后,我有另一个表,其中保存客户用户名和密码,并将客户 ID 作为外键。然后我有一个 Android 应用程序,用户可以在其中创建新帐户。我遇到的困难是,假设用户在点击提交按钮时输入信息以及用户名和密码,所有详细信息都需要输入到客户表中。然后,这将使用我的触发器和序列生成一个自动编号 ID。然后,我需要检索这个自动生成的号码并将其与用户名和密码一起提交到用户名表中。我这在 SQL 中是可能的。
您可以在插入命令中使用 RETURNING CLAUSE。
它应该看起来像这样:
INSERT INTO customer (col1, col2, ...) VALUES (val1, val2, ...)
RETURNING id
另一种选择是使用 INSERT ALL 语法,如下所示:
INSERT ALL
INTO customer (id, col1, col2, ...) VALUES (your_seq.nextval ,val1, val2, ...)
INTO customer_details (cust_id, col1, col2, ...) VALUES (your_seq.currval ,val1, val2, ...)
select * from dual;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
//Class.forName(DRIVER);
this.connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
Toast.makeText(this, "CONNECTED", Toast.LENGTH_LONG).show();
Statement statement = connection.createStatement();
//textView.setText( statement. );
StringBuffer stringBuffer1 = new StringBuffer();
editText = findViewById(R.id.editTextText);
//Toast.makeText(this, editText.toString(), Toast.LENGTH_LONG).show();
String insertString = "insert into emp (empno, ename ) values (5555, '"+ editText.getText() +"')";
//Toast.makeText(this, insertString, Toast.LENGTH_LONG).show();
textView.setText(insertString.toString());
int i = statement.executeUpdate( insertString);
if (i > 0) {
Toast.makeText(this, "Data Inserted", Toast.LENGTH_LONG).show();
}
//textView.setText(insertString.toString());
connection.close();
} catch (Exception e) {
textView.setText(e.toString());
}