根本原因:
访问数据库的用户有登录权限,但无操作表的权限
解决办法:
1. 在[企业控制台]窗口–[树]子窗口–[安全性]子树–[登录]项里将你使用的登陆用户的默认数据库设为你所使用的数据库。
2. 在[企业控制台]窗口–[树]子窗口–[安全性]子树–[登录]项里新增一个登录用户(在其中选择SQL Server 身份验证、服务器角色和要访问的数据库),以后便可用些新增用户访问你勾选的数据库了。
大家在用java连接ms sql时可能会这样的问题
原因是sa用户为系统用户,它虽然能够登陆数据库,但是数据库里边的权限都是dbo的,所以,我们现在为这个数据库重新建立一个用户.
当然,这个情况只发生在java里边. .net是不会这样的.
只要新建立一个用户,再在权限那分配权限做好就行了.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
public Connection getConnectionDB() { String driverName = "com.microsoft.jdbc.sqlserver.SQLServerDriver"; String ConnectionString = "jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=test;"; String userName = "username"; String userPwd = "password"; try { Class.forName(driverName); con = DriverManager.getConnection(ConnectionString, userName, userPwd); //System.out.println("Connection Successful!"); } catch (Exception e) { e.printStackTrace(); } return con; } ConnectionDB prod = new ConnectionDB(); Connection con = prod.getConnectionDB(); CallableStatement callStmt = null; java.sql.Statement stat = null; java.sql.ResultSet rs = null; stat = con.createStatement(); String sql = "select * from table"; rs = stat.executeQuery(sql); |
thank you very much! According to your suggestion,I successfully solve my problem!