【问题标题】:can not retrieve data from sql server无法从 sql server 检索数据
【发布时间】:2011-06-28 22:37:29
【问题描述】:

我无法从 sql server 中的 db 中检索数据。

我使用 c3p0 作为池,这是 c3p0.properties:

c3p0.user=test
c3p0.password=123456
c3p0.jdbcUrl=jdbc:sqlserver://xxxxxx:1433;databaseName=TIMDB;SelectMethod=cursor
c3p0.driverClass=com.microsoft.sqlserver.jdbc.SQLServerDriver
c3p0.maxPoolSize=15
c3p0.testConnectionOnCheckin=true
c3p0.idleConnectionTestPeriod=3600

在sql server中,我新建了一个名为test的用户,默认db是TIMDB,服务器角色是public,这是用户映射:

但是当我启动应用程序时,我什么也得不到。

从log4j创建的日志中,我可以得到用于检索数据的sql,但是如果我将sql复制到sql管理工作室并创建一个新的查询,我可以检索一些数据。

不知道为什么?

【问题讨论】:

  • 请展示一些演示问题的代码。
  • sql 类似于 :select logtime,dn,dh from Mean_5Min 其中 logtime 在 '2011-12-12 00:00:00' 和 '2011-12-13 00:00:00' 之间。

标签: sql sql-server c3p0


【解决方案1】:

对我来说,这似乎是一个权限问题。如果生成的 SQl 在您在 Management Studio 中使用时运行(即在您的用户帐户下),那么您就知道该代码是好的。您从您的帖子中为用户“测试”提供了什么访问权限我看到“用户映射:在此处输入图像描述”?他至少需要 db_datareader,可能更多,具体取决于生成的代码。

您也可以尝试在您的“测试”用户下登录 SQL Management Studio,看看您是否可以执行代码。这将消除您的应用程序/网络出现问题的可能性。

【讨论】:

  • 您是否也尝试以测试用户身份登录 SQL 管理工作室?如果以他的身份登录 SQL 将执行你知道 SQL 是好的并且测试有合适的权限。否则,根据 SQL,他可能需要进一步的权限。尝试 db_owner 如果可以修复它,您可以尝试缩小到适当的权限。
  • 是的,我作为test登录studio,可以执行sql了。
  • 我会说也许它没有权限。网络连通性如何?应用程序肯定可以连接到 SQL 服务器吗?正确打开端口等。也许像防火墙问题一样愚蠢。
  • 谢谢大家的回复,我太傻了!!!!我只是忘记将 ipall-tcp 端口设置为 1433,现在它可以工作了。但我也想知道为什么 c3p0 不告诉我连接不好?
猜你喜欢
  • 2021-04-02
  • 2013-06-27
  • 2014-08-22
  • 1970-01-01
  • 2016-06-20
  • 2011-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多