I';我试图在SQL服务器上编辑一个数据表,但我一直收到一个错误,要么不接受关键字,要么由于超时而无法连接

本文关键字:一个 错误 不接受 关键字 连接 超时 于超时 数据表 SQL 服务器 一直 | 更新日期: 2023-09-27 18:25:40

我需要能够查看一个表,从该表中选择一行,并为我正在进行的项目编辑该行中的字段。现在我只是使用一个概念验证程序来了解它的工作原理,以便将其实现到实际中。所以我得到的第一个错误是服务器没有识别关键字"提供者"

protected void ChangeButton_Click(object sender, EventArgs e)
{
    using (SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))
    {
        SqlCommand cmd = new SqlCommand();
        cmd.Connection = conn;
        cmd.CommandText = "UPDATE DevTesting SET testStr = @testStr, testStr2 = @testStr2, testStr3 = @testStr3, testNum = @testNum WHERE PersonID = @PersonID";
        cmd.CommandType = CommandType.Text;

        string strPersonID = GridView1.Rows[1].Cells[1].Text;
        string strTestStr1 = "aerhtsm";   
        cmd.Parameters.Add("@testStr", SqlDbType.NVarChar, 50).Value = strTestStr1;
        conn.Open();
        cmd.ExecuteNonQuery();
    }
    GridView1.EditIndex = -1;
    BindGridView(); 
}
private void BindGridView()
{
    using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["SQLServer2005DBConnectionString"].ToString()))
    {
        DataSet grid1 = new DataSet();
        string strSelectCmd = "SELECT testStr, testStr2, testStr3, testNum FROM GridView1";
        SqlDataAdapter da = new SqlDataAdapter(strSelectCmd, conn);
        conn.Open();
        da.Fill(grid1, "GridView1");
        DataView dvPerson = grid1.Tables["GridView1"].DefaultView;
        GridView1.DataSource = grid1;
        GridView1.DataBind();
    }
}

我得到的另一个错误是,当代码到达conn.Open()。有人能解释一下我做错了什么吗。这是我的web.config文件的副本,以备您需要。

     <?xml version="1.0" encoding="utf-8"?>
    <configuration>
   <configSections>
   <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"  requirePermission="false" />
   </configSections>
   <connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=(LocalDb)'v11.0;Initial Catalog=aspnet-WebApplication11-20130731142716;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|'aspnet-WebApplication11-20130731142716.mdf"
  providerName="System.Data.SqlClient" />
     <add name="TestConnectionString" connectionString="Provider=SQLNCLI11;Data Source=HQSQL;Integrated Security=SSPI;Initial Catalog=BG_BACKUP"
  providerName="System.Data.OleDb" />
      <add name="ConnectionString" connectionString="Provider=SQLNCLI11;Data Source=HQSQL;Integrated Security=SSPI;Initial Catalog=BG_BACKUP"
  providerName="System.Data.OleDb" />
     </connectionStrings>
      <system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
<pages>
  <namespaces>
    <add namespace="System.Web.Optimization" />
  </namespaces>
  <controls>
    <add assembly="Microsoft.AspNet.Web.Optimization.WebForms" namespace="Microsoft.AspNet.Web.Optimization.WebForms" tagPrefix="webopt" />
  </controls>
</pages>
<authentication mode="Forms">
  <forms loginUrl="~/Account/Login.aspx" timeout="2880" />
</authentication>
<profile defaultProvider="DefaultProfileProvider">
  <providers>
    <add name="DefaultProfileProvider" type="System.Web.Providers.DefaultProfileProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/" />
  </providers>
</profile>
<membership defaultProvider="DefaultMembershipProvider">
  <providers>
    <add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
  </providers>
</membership>
<roleManager defaultProvider="DefaultRoleProvider">
  <providers>
    <add name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/" />
  </providers>
</roleManager>
<sessionState mode="InProc" customProvider="DefaultSessionProvider">
  <providers>
    <add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" />
  </providers>
</sessionState>
  </system.web>
 <entityFramework>
  <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
       <parameters>
     <parameter value="v11.0" />
     </parameters>
      </defaultConnectionFactory>
    </entityFramework>
      </configuration>

好的,这是我按下按钮覆盖数据表的一部分时得到的错误图像。我试图自己重新记忆这个解决方案,但在第二张图片中又出现了一个类似的错误。

I';我试图在SQL服务器上编辑一个数据表,但我一直收到一个错误,要么不接受关键字,要么由于超时而无法连接

web.config的ConnectionString部分中的ConnectionString键用于SqlClient.SqlConnection,但您指定使用providerName="System.Data.OleDb"。您应该更改为providerName="System.Data.SqlClient" OleDb客户端无法理解该语法。

然后UPDATE命令使用5个参数,但您只向parameters集合中添加了一个。这将是打开连接后的另一个错误。

然后在BindGridView中,您使用了一个没有在任何地方定义的连接字符串,最后这里的SELECT语句引用了一个名为GridView的表,我怀疑您键入了正确的表名(更新命令中使用的名称称为DevTesting

对于超时问题,您应该添加连接到超时的异常消息

相关文章: