
# 示例：常用操作
以下演示基于JDBC开发的主要步骤。
涉及创建数据库、创建表、插入数据等。
#### 代码示例
此示例将演示如何基于DataArts Fabric SQL提供的JDBC接口开发应用程序。
```
//DBtest.java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class DBTest {
  //创建数据库连接。
  public static Connection GetConnection() {
    String driver = "org.postgresql.Driver";
    String sourceURL = "jdbc:fabricsql://localhost:443/fabricsql_default";
    Connection conn = null;
    try {
      //加载数据库驱动。
      Class.forName(driver).newInstance();
    } catch (Exception e) {
      e.printStackTrace();
      return null;
    }
    try {
      Properties properties = new Properties();
      properties.setProperty("workspaceId", "");
      properties.setProperty("endpointId", "");
      properties.setProperty("lakeformation_instance_id", "");
      properties.setProperty("AccessKeyID", "");
      properties.setProperty("SecretAccessKey", "");
      //创建数据库连接。
      conn = DriverManager.getConnection(sourceURL, properties);
      System.out.println("Connection succeed!");
    } catch (Exception e) {
      e.printStackTrace();
      return null;
    }
    return conn;
  };
  //执行普通SQL语句，创建newproducts表。
  public static void CreateTable(Connection conn) {
    Statement stmt = null;
    try {
      stmt = conn.createStatement();
      //执行普通SQL语句。
      int rc = stmt
          .executeUpdate("CREATE TABLE newproducts(product_id INTEGER,product_name VARCHAR2(60),category VARCHAR2(60),quantity  INTEGER)STORE AS orc;");
      stmt.close();
    } catch (SQLException e) {
      if (stmt != null) {
        try {
          stmt.close();
        } catch (SQLException e1) {
          e1.printStackTrace();
        }
      }
      e.printStackTrace();
    }
  }
  //执行预处理语句，批量插入数据。
  public static void BatchInsertData(Connection conn) {
    PreparedStatement pst = null;
    try {
      //生成预处理语句。
      pst = conn.prepareStatement("INSERT INTO newproducts VALUES (?, ?, ?, ?);");
      for (int i = 0; i < 3; i++) {
        //添加参数。
        pst.setInt(1, i + 1);
        pst.setString(2, "name" + i);
        pst.setString(3, "cata" + i);
        pst.setInt(4, i + 1);
        pst.addBatch();
      }
      //执行批处理。
      pst.executeBatch();
      pst.close();
    } catch (SQLException e) {
      if (pst != null) {
        try {
          pst.close();
        } catch (SQLException e1) {
        e1.printStackTrace();
        }
      }
      e.printStackTrace();
    }
  }
  
  /**
   * 主程序，逐步调用各静态方法。
   * @param args
  */
  public static void main(String[] args) {
    //创建数据库连接。
    Connection conn = GetConnection();
    //创建表。
    CreateTable(conn);
    //批插数据。
    BatchInsertData(conn);
    //执行预编译语句，更新数据。
    ExecPreparedSQL(conn);
    //关闭数据库连接。
    try {
      conn.close();
    } catch (SQLException e) {
      e.printStackTrace();
    }
  }
}
```
