sql server 数据库连接方式分析、详解

先画一张概况图

 

 *OLEDB方式连接

       Sql身份验证模式:Provider="SQLOLEDB;data source=server_name;initial catalog=databasename;uid=username;pwd=password;" 

      Windows身份验证模式:ConnectString=”Provider=SQLOLEDB;Data Source=server_name;DataBase=databasename; Integrated Security=SSPI;Persist Security=true”

 

      注释:(此两种方式的却别仅在于windows验证中用Integrated Security=SSPI代替了sql验证中的uid=username;pwd=password语句(即指明用户名、密码语句)

    1.Provider=SQLOLEDB:提供者为SQLOLEDB(此为固定)

    2.Integrated Security=SSPI

    集成安全机制采用SSPI
    SSPI
是Security Support Provider Interface(Microsoft安全支持提供器接口)SSPI是定义得较全面的公用API,用来获得验证、信息完整性、信息隐私等集成安全服务,以  及用于所有分布式应用程序协议的安全方面的服务。

    设置Integrated Security为 True 的时候,采用windows身份验证模式。只有设置为 False 或省略该项的时候,采用 UserID, PWD 来连接。Integrated Security 可以设置为: True, false, yes, no ,还可以设置为:sspi ,相当于 True,建议用这个代替 True。

    3.Persist Security Info:坚持安全信息

    Persist Security Info属性的意思是表示是否保存安全信息,其实可以简单的理解为"ADO在数据库连接成功后是否保存密码信息",True表示保存,False表示不保存.ADO缺省为False(即可有可无).总体来说,如果数据库连接成功后不再需要连接的密码,出于安全性考虑,还是建议将Persist Security Info设为false,以防止后门程序取得数据库连接的密码.

    4.initial catalog等同于database(可以互换):指定连接数据库的名字(如果省略则连接的是当前用户名的默认数据库,详情见下文)

    5.DATA SOURCE是SQL服务器的名字
在data source里用localhost或(local)或“.”都代表本地服务器. 也可用本机的外网IP地址 例如:data source=192.168.24.71;

 *ODBC方式连接

 

   使用数据源方式

 

    此种方式主要是配置odbc数据源,有三种方式,系统dsn、用户dsn、文件dsn。具体方法这里不作介绍。配置完数据源以后即可连接:

    用系统dsn:  connectstring= "DSN=dsnname;   UID=username;   PWD=password"
  
    用文件dsn:   connectstring = "FILEDSN=filedsnname; UID= username;   PWD=password "  
 
 
  使用ODBC驱动方式:
    使用ODBC 驱动程序, 免去了配置ODBC数据源的步骤, 可以利用ODBC 驱动程序直接与数据库相连接。

    ConnectString="Driver={sql server};server=servername;database=databasename;uid=username;pwd=password;"

 

    详细注释(关于windows身份验证和SQL身份验证):

    Windows身份验证使用Windows登录用户身份连接数据库,而SQL身份验证要求显式地指定SQL Server用户ID和密码。要想使用Windows身份验证,必须在连接字符串中包括 Integrated Security 属性:
                            Data Source=ServerName;Integrated Security=True;

    默认情况下,Integrated Security 属性为 False ,这意味着将禁用Windows身份验证。如果没有显式地把这个属性的值设置为True,连接将使用SQL Server身份验证,因此,必须提供SQL Server用户ID和密码。Integrated Security属性还能识别的其他值只有SSPI(Security Support Provider Interface,安全性支持提供者接口).在所有的Windows NT操作系统上,其中包括Windows NT 4.0、2000、XP,都支持值SSPI。它是使用Windows身份验证时可以使用的惟一接口,相当于把Integrated Security 属性值设置为True。


    在Windows身份验证模式中,SQL Server使用Windows的安全子系统对用户连接进行有效性验证。即使显示地指定用户ID和密码,SQL Server也不检查连接字符串中的用户ID和密码。因为只有Windows NT、2000、XP支持SSPI,因此如果正使用的是这些操作系统,则只能使用Windows集成的安全策略去连接SQL Server。不论使用哪一个操作系统,当使用SQL Server身份验证时,必须在连接字符串中指定用户ID和密码:
Data Source=ServerName;User ID=donaldx;Password=unbreakable

    默认情况下,SQL Server 每一个用户都可指定一个默认数据库,当在数据库中创建用户时,可以设置用户的默认数据库。此外,也可以在任意时间更改用户的默认数据库。:如下图

   

设置好默认数据库后在连接时可以不指定database(或initial catalog)的值即可连接默认数据库
 

 

 

  • 15
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 23
    评论
DBConnectionManager.java //连接数据库用的 import java.sql.*; public class DBConnectionManager { private String driverName="com.microsoft.jdbc.sqlserver.SQLServerDriver"; private String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=demo"; private String user="sa"; private String password=""; public String getDriverName() { return driverName; } public void setDriverName(String driverName) { this.driverName = driverName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getUser() { return user; } public void setUser(String user) { this.user = user; } public Connection getConnection(){ try{ Class.forName(driverName); return DriverManager.getConnection(url, user, password); }catch(Exception e){ e.printStackTrace(); return null; } } } DBSQLManager.java //操作数据库用的 import java.sql.*; public class DBSQLManager { protected Connection con=null;//Connection对象 protected Statement stmt=null;//Statement对象 protected ResultSet rs=null;//记录结果集 protected String sql=""; //SQL语句 public DBSQLManager(){ try { DBConnectionManager dcm=new DBConnectionManager(); con=dcm.getConnection(); //con.setAutoCommit(false);//添加事物,既是否自动提交 stmt=con.createStatement(); } catch (SQLException e) { e.printStackTrace(); } } public Statement getStmt(){ return stmt; } public Connection getCon(){ return con; } public ResultSet getRs(){ return rs; } public void setSql(String sql){ this.sql=sql; } public String getSql(){ return sql; } //查找 public void execueQuery(){ try { rs=stmt.executeQuery(sql); } catch (SQLException e) { e.printStackTrace(); } } //更新 public void executeUpdate(){ try { stmt.executeUpdate(sql); } catch (SQLException e) { e.printStackTrace(); } } //关闭 public void close(){ if(rs!=null){ try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } rs=null; } if(stmt!=null){ try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } stmt=null; } try { con.close(); } catch (SQLException e) { e.printStackTrace(); } con=null; } } SqlOperate.java //用来调用数据库操作语句 import java.sql.ResultSet; import java.sql.SQLException; public class SqlOperate { //插入,修改,删除 public void insOrModOrDel(String sql){ DBSQLManager dbsm=new DBSQLManager(); dbsm.getStmt(); dbsm.setSql(sql); dbsm.executeUpdate(); dbsm.close(); } //显示 public void display(String sql){ DBSQLManager dbsm=new DBSQLManager(); dbsm.getStmt(); dbsm.setSql(sql); dbsm.execueQuery(); ResultSet rs=dbsm.getRs(); try { while(rs!=null&&rs.next()){ System.out.print(rs.getObject(1)+"\t"); System.out.print(rs.getObject(2)+"\t"); System.out.print(rs.getObject(3)+"\t"); System.out.println(rs.getObject(4)); } dbsm.close(); } catch (SQLException e) { e.printStackTrace(); } } } SqlMain.java //数据库的测试主函数 public class SqlMain { public static void main(String[] args){ SqlOperate sqlOpt=new SqlOperate(); // sqlOpt.insOrModOrDel("insert into user1 values('qianhaifei',999999,'qianhaifei@163.com')");//插入 // sqlOpt.insOrModOrDel("update user1 set username='weixiangyang' where id=4");//修改 // sqlOpt.insOrModOrDel("delete from user1 where username='weixy2000'");//删除 sqlOpt.display("select *from user1");//显示 } }
要使用Python连接SQL Server数据库,可以使用Pymssql模块。下面是连接SQL Server数据库的方法详解: 1. 安装Pymssql模块: 使用pip命令安装Pymssql模块: ``` pip install pymssql ``` 2. 导入Pymssql模块: 在Python程序中导入Pymssql模块: ```python import pymssql ``` 3. 连接SQL Server数据库: 使用pymssql.connect()方法连接SQL Server数据库,需要指定服务器地址、用户名、密码和数据库名称等参数: ```python conn = pymssql.connect(server='server_name', user='user_name', password='password', database='database_name') ``` 其中,server参数指定服务器地址,user参数指定用户名,password参数指定密码,database参数指定要连接的数据库名称。 4. 创建游标对象: 连接成功后,需要创建游标对象,用于执行SQL语句: ```python cursor = conn.cursor() ``` 5. 执行SQL语句: 使用游标对象的execute()方法执行SQL语句: ```python cursor.execute('SELECT * FROM table_name') ``` 6. 获取查询结果: 使用游标对象的fetchall()方法获取查询结果: ```python result = cursor.fetchall() ``` 7. 关闭连接: 查询完成后,需要关闭连接: ```python conn.close() ``` 完整的示例代码如下: ```python import pymssql # 连接SQL Server数据库 conn = pymssql.connect(server='server_name', user='user_name', password='password', database='database_name') # 创建游标对象 cursor = conn.cursor() # 执行SQL语句 cursor.execute('SELECT * FROM table_name') # 获取查询结果 result = cursor.fetchall() # 输出查询结果 for row in result: print(row) # 关闭连接 conn.close() ``` 这样就可以使用Python连接SQL Server数据库了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值