【发布时间】:2016-01-03 16:47:57
【问题描述】:
我在 asmx 页面上有以下 webmethod,但无法连接到我的数据库。任何人都可以阐明我哪里出错了。
[WebMethod]
public int[] getEmployeeIDs()
{
Connection conn = new Connection();
Recordset rs = new Recordset();
conn.ConnectionString = "Data Source=MyWebBasedServer;Initial Catalog=MyDatabase;Persist Security Info=False;User ID=MyLogin;Password=MyPassword";
rs.Open("SELECT ID from MyTable", conn, CursorTypeEnum.adOpenStatic);
int[] ID = new int[rs.RecordCount];
int i = 0;
while (!rs.EOF)
{
ID[i++] = rs.Fields["ID"].Value;
rs.MoveNext();
}
rs.Close();
conn.Close();
return ID;
}
我得到的错误信息是
连接不能用于执行此操作。它是 在这种情况下关闭或无效。 (指向“int[] ID = new int[rs.RecordCount];")
谢谢。
【问题讨论】:
-
看起来您需要在连接上调用 .open()。另外:你连接到什么数据库? Recordset 在我看来就像旧的 DAO 类。我已经很多年没见过这种语法了。
-
不是rs.Open在使用“conn”连接时打开的连接。我正在连接到 smarterasp.net 托管的数据库,它是一个 mssql 数据库。我已经从 youtube 视频中删除了这个。也许你可以帮助我。我要做的就是从我的数据库中将 MyTable 中的 ID 列表带入 Android 应用程序。有什么建议吗?
-
连接字符串看起来很可疑,因为您正在使用 ADO 连接类连接字符串应该具有如下格式:
"Provider=MySQLProv;server=MyWebBasedServer;uid=MyUserName;pwd=MyPassword;database=MyDatabase" -
这是一个 MS Sql 不是 MY Sql。这对连接字符串有影响吗?
-
为什么不使用 DataReader 或 DataSet 呢?旧的 Recordset 对象是很久以前 ADODB 是当前技术时代码的保留。您应该将连接字符串移动到配置文件中,以便可以从一个位置访问它。
标签: c# sql-server adodb webmethod