私は、JDBCを使って複数のSQL文を一度に実行しようとしています。私は、これを達成するためにaddBatch()とexecuteBatch()関数を使用できることを認識しています。私はそれらを私のコードに組み込みましたし、 "SET NOCOUNT OFF"でもCREATEとINSERT文はSQL Serverデータベースに反映されませんでした。ここで私は以下を試みてきたものです:JDBCを使用してテーブルを作成し、テーブルにレコードを挿入するにはどうすればよいですか?
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import com.microsoft.sqlserver.jdbc.SQLServerException;
public class Excel_Java_POI_Exp_V2
{
@BeforeClass
public void setUp() throws Exception
{
//Do Nothing
}
@Test
public void testUsingExcel() throws Exception, SQLException
{
String url = "jdbc:sqlserver://localhost:1433;" + "databaseName=AdventureWorks2012;" + "integratedSecurity=true;";
try
{
//Loading the required JDBC Driver class
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//Creating a connection to the database
Connection conn = DriverManager.getConnection(url);
//Print Connection Verification
System.out.println("Connection Established ln");
Statement query = conn.createStatement();
//Executing SQL query and fetching the result
String SQL = "SET NOCOUNT OFF;";
//CREATE A NEW SQL TABLE AFTER ESTABLISHING CONNECTION
String SQL_Create = "CREATE TABLE SELCREATEDB"
+ "(PersonID int, LastName varchar(255), FirstName varchar(255), Address varchar(255), City varchar(255));";
//INSERT 10 RECORDS WITHIN DATABASE TABLE
String SQL1 = "INSERT INTO dbo.SELCREATEDB VALUES "
+ "(\"1000\", \"Davis\", \"John\", \"3444 Mulberry Lane\", \"Oakland CA\")";
String SQL2 = "INSERT INTO dbo.SELCREATEDB VALUES "
+ "(\"1001\", \"Robinson\", \"Larry\", \"5633 Skyline Drive\", \"Annandale VA\")";
String SQL3 = "INSERT INTO dbo.SELCREATEDB VALUES "
+ "(\"1002\", \"Arafat\", \"Yasser\", \"5633 Quidbury Lane\", \"Hezburg Israel\")";
String SQL4 = "INSERT INTO dbo.SELCREATEDB VALUES "
+ "(\"1003\", \"Castro\", \"Fidel\", \"5234 Honey Tree Avenue\", \"Port Lunciana Cuba\")";
String SQL5 = "INSERT INTO dbo.SELCREATEDB VALUES "
+ "(\"1004\", \"Carter\", \"Jimmy\", \"9234 Mackel Court\", \"Lynchburg VA\")";
String SQL6 = "INSERT INTO dbo.SELCREATEDB VALUES "
+ "(\"1005\", \"Boro\", \"Kerebede\", \"2342 Memory Lane\", \"Jamestowne VA\")";
String SQL7 = "INSERT INTO dbo.SELCREATEDB VALUES "
+ "(\"1006\", \"Attenborough\", \"David\", \"3330 Peach Lane\", \"Atlanta GA\")";
String SQL8 = "INSERT INTO dbo.SELCREATEDB VALUES "
+ "(\"1007\", \"Ahmed\", \"David\", \"30499 Tressleburry Lane\", \"Tampa FL\")";
String SQL9 = "INSERT INTO dbo.SELCREATEDB VALUES "
+ "(\"1008\", \"Tramper\", \"Jamie\", \"30499 Dickens Avenue\", \"Dallas TX\")";
String SQL10 = "INSERT INTO dbo.SELCREATEDB VALUES "
+ "(\"1009\", \"Valentine\", \"Rudy\", \"8900 Spicetree Lane\", \"San Diego CA\")";
//SET PROPERTIES
query.addBatch(SQL);
//CREATE TABLE
query.addBatch(SQL_Create);
//INSERT RECORDS
query.addBatch(SQL1);
query.addBatch(SQL2);
query.addBatch(SQL3);
query.addBatch(SQL4);
query.addBatch(SQL5);
query.addBatch(SQL6);
query.addBatch(SQL7);
query.addBatch(SQL8);
query.addBatch(SQL9);
query.addBatch(SQL10);
//EXECUTE ALL COMMANDS
query.executeBatch();
//CLOSE CONNECTION
conn.close();
}
catch (SQLServerException sqe)
{
System.out.println("A result set was generated for update.");
}
catch (java.sql.BatchUpdateException bae)
{
System.out.println("Executed Queries! Terminating Connection...");
}
}
@AfterClass
public void tearDown() throws Exception
{
//Do Nothing
}
}
私はAdventureWorks2012データベースに設立JDBC接続でSQL Server 2012のStandard Editionを使用しています。どんな助けでも大歓迎です。ありがとうございました!
コンソールでエラーが発生していますか? conn.setAutoCommit(false)を追加しようとしました。トランザクションを開始する前にconn.commit();最後に –
私は主にINSERTステートメントでエラーが発生しています。私はフォーマットエラーを一緒に受信しています。私はいくつかのポイントで2つの部分にコードを分割することができたので、私のCREATE文が最初に実行され、次にconn2.createStatement()がINSERT文に別々に追加されるquery2に設定されると宣言しますが、これはうまくいきませんでした。 –
接続URLにdatabaseName = AdventureWorks2012と挿入ステートメントでdbo.SELCREATEDBに挿入しようとしています。 INSERTステートメント –