通过JDBC连接SQL Server2005数据库

时间:2022-08-22 13:38:39
 

首先要在工程里面加载一个sqljdbc.jar的包,包在Mircosoft SQL Server2005上面可以下载.
查询操作具体流程如下:
1.获取连接(connection对象)
2.获取命令执行对象
  statement(通过createstatement创建)
  preparedstatement(通过preparedstatement)
  callablestatement(preparedcall)
3.执行 execute() 增加 删除 修改       返回值是布尔型
  executeQuery()                 返回值是ResultSet结果集
  executeupdate() 增加 删除 修改 返回值是整形(影响的行数)
4.假如是对结果集操作 一般采用while循环的方式对结果集进行操作
5.关闭资源(ResultSet  statement  conn的顺序)
-- ===============================================================================
命令执行对象
 statement是执行普通的sql语句 形如:select * from usertb
 preparedstatement是执行的是占位符格式的 形如:insert into usertb values(?,?,?)
 statement.setInt(1,10);
 statement.setString(2,"aa")
 statement.setString(3,"123")
 callablestatement是执行存储过程   形如:{call getUser(?,?,?)}
 statement.setInt(1,10);
 statement.setString(2,"2222")
 statement.registerOutParamenter(2, java.sql.Types.VARCHAR);
/*----------------------------------------------------------------------------------*/
/*示例连接到数据库*/
Connection conn = null;
String url = "jdbc:sqlserver://localhost:1433;databasename=J1106";
public Connection getConn() throws ClassNotFoundException, SQLException {
// 加载驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
// 获取与数据库的连接
if (conn == null) {

   //DriverManager.getConnection( 数据库名称, 用户 ,  密码,)
   //其中数据库名称的格式为:jdbc:sqlserver://IP地址:端口号;databasename=数据库名
  conn = DriverManager.getConnection(url, "sa", "123");
}
return conn;
}
/*---------------------------------------------------------------------------------*/
/*对其做一个简单的查询操作*/
public void getResult() {
String sql = "select * from bank";
Statement st = null;
esultSet rs = null;
try {
st = this.getConn().createStatement();
rs = st.executeQuery(sql);
while (rs.next()) {
System.out.println("第一列的值是:" + rs.getString("currentMoney")
+ "第2列的值是:" + rs.getString(2));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
// 关闭连接,结果对象,命令执行对象,释放数据库连接资源
// 顺序从小到大.
st.close();
rs.close();
this.conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}

 


/*------------------------------------------------------------------------------------*/

//简单的存储过程,通过userid获得username
public String getNameByProc(int userid) {
 CallableStatement cs = null;
 String name = "";
       // 调用存储过程格式: { call 存储过程名称(?,?...)}
 String sql = "{call getName(?,?)}";
 try {
  cs = this.getConn().prepareCall(sql);
  // 为第一个参数赋值
  // 第一个为整数类型,所以才用setInt
  cs.setInt(1, userid);
  //为输出参数注册
  cs.registerOutParameter(2, java.sql.Types.VARCHAR);
  //参数设置完毕,开始执行存储过程.
  cs.execute();
  //注意输出参数的位置,与上面注册的对应
  name = cs.getString(2);
 } catch (SQLException e) {
  e.printStackTrace();
 } finally {
  try {
   if (cs != null) {
    cs.close();
   }
   if (this.conn != null) {
    this.conn.close();
   }
  } catch (SQLException e) {
   e.printStackTrace();
  }
 }
  return name;
 }
/*-------------------------------------------------------------------------------------*/