扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
URL当中用了integratedSecurity=true;就不能用SQLServer的用户名和密码登录了.你去掉试试。详细看这里。blog.csdn.net/outofmemo/article/details/52549379
创新互联公司基于成都重庆香港及美国等地区分布式IDC机房数据中心构建的电信大带宽,联通大带宽,移动大带宽,多线BGP大带宽租用,是为众多客户提供专业达州托管服务器报价,主机托管价格性价比高,为金融证券行业服务器托管,ai人工智能服务器托管提供bgp线路100M独享,G口带宽及机柜租用的专业成都idc公司。
若要连接到远程服务器上的默认实例,请使用:
String url = "jdbc:sqlserver://MyServer:integratedSecurity=true;"
若要连接到服务器上的特定端口,请使用:
String url = "jdbc:sqlserver://Myserver:1533;integratedSecurity=true;"
若要连接到服务器上的指定实例,请使用:
String url = "jdbc:sqlserver://MyServer;instanceName=INSTANCE1;integratedSecurity=true;"
若要连接到服务器上的特定数据库,请使用:
String url = "jdbc:sqlserver://MyServer;database=AdventureWorks;integratedSecurity=true;"
package basic;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBC {
public void findAll() {
try {
// 获得数据库驱动
//由于长时间不写,驱动名和URL都忘记了,不知道对不对,你应该知道的,自己改一下的哈
String url = "jdbc:oracle:thin:@localhost:1521:XE";
String userName = "system";
String password = "system";
Class.forName("oracle.jdbc.driver.OracleDriver");
// 创建连接
Connection conn = DriverManager.getConnection(url, userName,
password);
// 新建发送sql语句的对象
Statement st = conn.createStatement();
// 执行sql
String sql = "select * from users";
ResultSet rs = st.executeQuery(sql);
// 处理结果
while(rs.next()){
//这个地方就是给你的封装类属性赋值
System.out.println("UserName:"+rs.getString(0));
}
// 关闭连接
rs.close();
st.close();
conn.close();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void delete(){
try {
//步骤还是那六个步骤,前边的两步是一样的
String url = "jdbc:oracle:thin:@localhost:1521:XE";
String userName = "system";
String password = "system";
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection(url,userName,password);
//这里的发送sql语句的对象是PreparedStatement,成为预处理sql对象,因为按条件删除是需要不定值的
String sql = "delete from users where id = ?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(0, 1);
int row = ps.executeUpdate();
if(row!=0){
System.out.println("删除成功!");
}
// 关闭连接
rs.close();
st.close();
conn.close();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
如果说与数据库打交道的意义上讲,JDBC是最基础的,mybatis等框架主键也是基于此。另外springJBA Data是什么鬼,是Spring Data JPA 吧,JPA全称为Java持久性API(Java Persistence API),JPA是Java EE 5标准之一。
从应用的角度来看,直接使用JDBC写代码连接数据库已经很少了,除了一些小项目;mybatis可以自动生成dao和daoImpl以及配置文件,可以修改sql语句,使用较为灵活;
为了简化程序与数据库交互的代码,spring提供了一个现成的dao层框架,spring家族提供的spring-data适用于关系型数据库和nosql数据库 ,虽然使用起来很方便,但其简化了SQL功能如查询所有数据 findAll(),但复杂查询就有些麻烦了;
就是sqljdbc.auth.dll没找到,要把它所有目录放到系统变量Path或直接放到windows\System32下,不能把它打包到jar里,也不是放在classpath上
如果JDBC连接处于自动提交模式,默认情况下,则每个SQL语句在完成后都会提交到数据库。
对于简单的应用程序可能没有问题,但是有三个原因需要考虑是否关闭自动提交并管理自己的事务 -
提高性能
保持业务流程的完整性
使用分布式事务
事务能够控制何时更改提交并应用于数据库。 它将单个SQL语句或一组SQL语句视为一个逻辑单元,如果任何语句失败,整个事务将失败。
要启用手动事务支持,而不是使用JDBC驱动程序默认使用的自动提交模式,请调用Connection对象的setAutoCommit()方法。 如果将布尔的false传递给setAutoCommit(),则关闭自动提交。 也可以传递一个布尔值true来重新打开它。
例如,如果有一个名为conn的Connection对象,请将以下代码关闭自动提交 -
conn.setAutoCommit(false);Java
提交和回滚
完成更改后,若要提交更改,那么可在连接对象上调用commit()方法,如下所示:
conn.commit( );Java
否则,要使用连接名为conn的数据库回滚更新,请使用以下代码 -
conn.rollback( );Java
以下示例说明了如何使用提交和回滚对象 -
try{
//Assume a valid connection object conn
conn.setAutoCommit(false);
Statement stmt = conn.createStatement();
String SQL = "INSERT INTO Employees " +
"VALUES (106, 20, 'Rita', 'Tez')";
stmt.executeUpdate(SQL);
//Submit a malformed SQL statement that breaks
String SQL = "INSERTED IN Employees " +
"VALUES (107, 22, 'Sita', 'Singh')";
stmt.executeUpdate(SQL);
// If there is no error.
conn.commit();}catch(SQLException se){
// If there is any error.
conn.rollback();}Java
在这种情况下,上述INSERT语句不会成功执行,因为所有操作都被回滚了。
为了更好的理解,建议学习研究“事务提交示例代码”。
使用保存点
新的JDBC 3.0新添加了Savepoint接口提供了额外的事务控制能力。大多数现代DBMS支持其环境中的保存点,如Oracle的PL/SQL。
设置保存点(Savepoint)时,可以在事务中定义逻辑回滚点。 如果通过保存点(Savepoint)发生错误时,则可以使用回滚方法来撤消所有更改或仅保存保存点之后所做的更改。
Connection对象有两种新的方法可用来管理保存点 -
setSavepoint(String savepointName): - 定义新的保存点,它还返回一个Savepoint对象。
releaseSavepoint(Savepoint savepointName): - 删除保存点。要注意,它需要一个Savepoint对象作为参数。 该对象通常是由setSavepoint()方法生成的保存点。
有一个rollback (String savepointName)方法,它将使用事务回滚到指定的保存点。
以下示例说明了使用Savepoint对象 -
try{
//Assume a valid connection object conn
conn.setAutoCommit(false);
Statement stmt = conn.createStatement();
//set a Savepoint
Savepoint savepoint1 = conn.setSavepoint("Savepoint1");
String SQL = "INSERT INTO Employees " +
"VALUES (106, 24, 'Curry', 'Stephen')";
stmt.executeUpdate(SQL);
//Submit a malformed SQL statement that breaks
String SQL = "INSERTED IN Employees " +
"VALUES (107, 32, 'Kobe', 'Bryant')";
stmt.executeUpdate(SQL);
// If there is no error, commit the changes.
conn.commit();}catch(SQLException se){
// If there is any error.
conn.rollback(savepoint1);}Java
在这种情况下,上述INSERT语句都不会成功,因为所有操作都被回滚了。
为了更好的理解,建议学习研究保存点示例代码。
原文地址:网页链接
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流