0


我创建了一个 ASP.Net 4.0 网站,并与 Visual Foxpro 8.0 数据库建立了 OLEDB 连接,以便从表中选择数据。使用的代码写在下面...

    string strConnString = "Provider=vfpoledb;Data Source=C:\Users\mohammads\Documents\Visual FoxPro Projects\dbTallowMaster.dbc;";
    OleDbConnection connection = new OleDbConnection(strConnString);
    connection.Open();
    string username = "675";
    string password = "675";
    string sqlQuery = "SELECT userinfoid, username, password FROM tm_userinfo.dbf WHERE username = \"" + username + "\" AND password = \"" + password + "\"";
    OleDbCommand cmd = new OleDbCommand(sqlQuery, connection);
    OleDbDataAdapter oOleDbDataAdapter = new OleDbDataAdapter(cmd);
    DataTable dt = new DataTable();
    oOleDbDataAdapter.Fill(dt);

此代码在本地系统中运行良好,但是当我在 Windows 7 IIS 6.0 上托管此站点时,连接未打开,并且出现“路径或文件名无效”的错误。请告诉我为什么只有当我在 IIS 中托管这段代码时才会出现问题。

在 IIS 中托管站点时,连接字符串的数据源是否应该有一些变化。

4

1 回答 1

2

旁注......我将开始使用参数化构建您的查询,特别是如果来自网络。VFP 使用“?” 作为参数的占位符,因此您不必明确地将值括在引号中。

string sqlQuery = "SELECT userinfoid, username, password "
    + "FROM tm_userinfo.dbf "
    + "WHERE username = ? and password = ?";
OleDbCommand cmd = new OleDbCommand(sqlQuery, connection);
cmd.Parameters.Add("parmUserName", OleDbType.Char).Value = username; // from your string
cmd.Parameters.Add("parmPassword", OleDbType.Char).Value = password; // variables...

OleDbDataAdapter oOleDbDataAdapter = new OleDbDataAdapter(cmd);

请注意,参数的添加顺序与“?”相同。在查询中。

至于连接,不应该

连接字符串中的“vfpoledb.1”而不是“vfpoledb”。

最后,需要考虑的是,由于您的数据位于“用户”下的子文件夹中,因此它们通常“仅限于”该用户。运行 IIS 时,用户通常类似于

IUSR_{machine name} 代表互联网用户,而不是您。所以权限可能是你的问题。

于 2013-01-04T13:38:02.483 回答