2012-07-24 61 views
3

當我嘗試在C#中編寫到我的數據庫的應用程序連接時,我在Visual Studio 2005中成功構建應用程序,但是當我在調試器中運行該網站時,出現錯誤:Asp.Net應用程序數據庫連接問題

Exception Details: System.ArgumentException: Format of the initialization string does not conform to specification starting at index 118. 

下面是給錯誤的連接代碼:我有我的web.config正確寫入連接字符串

SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["Server"].ConnectionString); 

,什麼這意味着遠程文件,以便即時無言以對。林不知道如果我失去了什麼。任何幫助讚賞。這裏是我可能幫助的部分的全部代碼:

using System; 
using System.Data; 
using System.Configuration; 
using System.Collections; 
using System.Web; 
using System.Web.Security; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Web.UI.WebControls.WebParts; 
using System.Web.UI.HtmlControls; 
using System.Web.Configuration; 
using System.Data.SqlClient; 

public partial class RateAnalyzerPage: System.Web.UI.Page 
{ 
    protected void Search_Click(object sender, EventArgs e) 
    { 
     string IDnumber = mechantNumber.Text; 
     string selectSQL = "SELECT FROM Authors Where MID='"+ IDnumber +"'"; 
    // SqlConnection con = new SqlConnection(@"Server="); 
    //SqlConnection con = new SqlConnection(); 
    SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["Server"].ConnectionString); 
    SqlDataReader reader; 
    try 
    { 
     con.Open(); 
     SqlCommand cmd = new SqlCommand(selectSQL, con); 
     reader = cmd.ExecuteReader(); 
     while (reader.Read()) 
     { 
      QualVol.Text = reader["TotalVolume"].ToString(); 
     } 
     reader.Close(); 
    } 
    catch (Exception err) 
    { 

    } 
    finally 
    { 
     con.Close(); 
    } 
} 
} 

讓我知道是否缺少一些有用的數據。

繼承人的連接字符串:

+0

什麼行給出了錯誤,當您打開連接?你可以發佈你的web.config connectionStrings部分? – 2012-07-24 21:09:27

+0

你需要發佈你的''connectionStrings'部分。配置文件;這是最有可能發生錯誤的地方 – GolfWolf 2012-07-24 21:09:45

+0

'code' \t \t'code' – 2012-07-24 21:20:28

回答

7

我分離出來並用XML解碼連接字符串值:

Data Source=Server;Initial Catalog=Odata;Integrated Security=True;MultipleActiveResultSets=False;Packet Size=4096;Application Name="Microsoft SQL Server Management Studio"User ID=Name;Password=PW

As你可以看到,你錯過了Application NameUser ID之間的;。我不確定這是問題,但這是可能的。

2

連接字符串使用Integrated Security=True,但正確的語法是 Integrated Security=SSPI;Trusted_Connection=True所以改變它,要刪除用戶名和密碼。
(或刪除集成安全性= True並保留用戶ID和密碼)

嘗試更改代碼中的內容。

protected void Search_Click(object sender, EventArgs e) 
{ 
    string IDnumber = mechantNumber.Text; 
    string selectSQL = "SELECT * FROM Authors Where [email protected]"; 
    using(SqlConnection con = new SqlConnection 
         (System.Configuration.ConfigurationManager.ConnectionStrings 
         ["Server"].ConnectionString)) 
    { 
     SqlDataReader reader; 
     con.Open(); 
     SqlCommand cmd = new SqlCommand(selectSQL, con); 
     cmd.Parameters.AddWithValue("@num", IDNumber); 
     reader = cmd.ExecuteReader(); 
     while (reader.Read()) 
     { 
       QualVol.Text = reader["TotalVolume"].ToString(); 
     } 
     reader.Close(); 
    } 
} 

嘗試使用using statemend,這保證了您的連接所述放置
儘量使用參數化查詢,這避免SQL注入攻擊和報價問題
還可以選擇需要的字段列表或*

+0

是一個快速更改:PI表示服務器。 – 2012-07-24 21:23:12

+0

使用IntegratedSecurity = True和UserID/Password更新了答案。 – Steve 2012-07-24 21:30:30

2

我認爲雅各布是對的。請注意,不要這樣做:

string selectSQL = "SELECT FROM Authors Where MID='"+ IDnumber +"'"; 

這將導致SQL注入攻擊,就像上週用來獲取雅虎用戶帳戶的攻擊一樣。

而是執行此操作:

string selectSQL = "SELECT * FROM Authors Where [email protected]"; 
cmd.Parameters.AddWithValue("@ID", IDnumber); 
相關問題