2013-07-31 14 views
0

我需要能夠查看一個表並從中選擇一行表和編輯該行中的一個字段,以用於我正在處理的項目。現在我只是使用概念驗證程序來弄清楚它是如何工作的,所以我可以將它實現爲真實的東西。所以第一個錯誤我得到的是服務器無法識別關鍵字「提供者」我想編輯一個SQL服務器上的數據表,我不斷收到一個關於不接受關鍵字或者由於超時而無法連接的錯誤

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();中的changeButton方法。有人能解釋我做錯了什麼嗎?如果你需要它的話,我的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> 

確定這裏是錯誤,當我按下按鈕覆蓋數據表中的一部分,我得到的image。我試圖remedie我自己的解決方案,並得到了另一個類似的錯誤是在second image.

+0

凡'SQLServer2005DBConnectionString'定義? –

回答

0

在你的web.config的ConnectionString部分的ConnectionString的鍵用於一個SqlClient.SqlConnection,但你指定要使用providerName="System.Data.OleDb"。您應該更改爲providerName="System.Data.SqlClient" OleDb客戶端無法理解該語法。

然後,UPDATE命令使用5個參數,但只向Parameters集合添加一個參數。這將是連接打開後的另一個錯誤。

然後在BindGridView您使用的ConnectionString沒有在任何地方定義,終於在這裏的SELECT語句引用了一個名爲GridView的表,我懷疑你沒有正確輸入表的正確名稱(在更新命令中使用的一個被稱爲DevTesting

的超時問題,您應該添加連接超時異常消息

相關問題