ConnectionString错误

时间:2011-11-30 18:08:48

标签: c# asp.net

我有一个表单,在用户输入用户名和密码并单击添加按钮后,它应该将其添加到我的tblUserLogin。现在它有一个错误,上面写着:

  

初始化字符串的格式不符合规范   从索引0开始。描述:发生了未处理的异常   在执行当前Web请求期间。请查看   堆栈跟踪以获取有关错误及其位置的更多信息   起源于代码。

     

异常详细信息:System.ArgumentException:。的格式   初始化字符串不符合从...开始的规范   指数0。

Line 40:            // userPassword = (txtPassword.Text);
Line 41: 
Line 42:         using (OleDbConnection conn = new OleDbConnection("PayrollSystem_DBConnectionString"))
Line 43: 
Line 44:          {

以下是我的frmManageUsers表单的html代码:

<asp:SqlDataSource ID="SqlDataSource1" runat="server"  
        ConnectionString="<%$ ConnectionStrings:PayrollSystem_DBConnectionString %>"  
        ProviderName="<%$ ConnectionStrings:PayrollSystem_DBConnectionString.ProviderName %>"  

   SelectCommand="SELECT [UserID], [UserName], [UserPassword], [SecurityLevel] FROM [tblUserLogin]"> 
</asp:SqlDataSource> 

</div> 
    <div align="center"> 
    <asp:Label ID="Label1" runat="server" Text="Manage Users"></asp:Label> 
<p> 
    <asp:Label ID="Label2" runat="server" Text="User Name:"></asp:Label> 
    <asp:TextBox ID="txtUserName" runat="server"></asp:TextBox> 
</p> 
<p> 
    <asp:Label ID="Label3" runat="server" Text="Password:"></asp:Label> 
    <asp:TextBox ID="txtPassword" runat="server"></asp:TextBox> 
</p> 
        <p> 
            <asp:Label ID="Label4" runat="server" Text="Security Level:"></asp:Label> 
            <asp:DropDownList ID="drpdwnlstSecurityLevel" runat="server"  
                onselectedindexchanged="drpdwnlstSecurityLevel_SelectedIndexChanged"> 
                <asp:ListItem>A</asp:ListItem> 
                <asp:ListItem>U</asp:ListItem> 
            </asp:DropDownList> 
</p> 
        <p> 
            <asp:Button ID="btnAddUser" runat="server" onclick="btnAddUser_Click1"  
    Text="Add User" />  
  </p> 
        <p> 
            <asp:Label ID="lblError" runat="server"></asp:Label> 
</p> 

    </div> 
<p> 
    &nbsp;</p> 
            <div align="center"> 
<asp:GridView ID="tblUserLogin" runat="server" AutoGenerateColumns="False"  
    DataSourceID="SqlDataSource1"> 
    <Columns> 
        <asp:BoundField DataField="UserID" HeaderText="UserID" InsertVisible="False"  
            SortExpression="UserID"></asp:BoundField> 
        <asp:BoundField DataField="UserName" HeaderText="UserName"  
            SortExpression="UserName"></asp:BoundField> 
        <asp:BoundField DataField="UserPassword" HeaderText="UserPassword"  
            SortExpression="UserPassword"></asp:BoundField> 
        <asp:BoundField DataField="SecurityLevel" HeaderText="SecurityLevel"  
            SortExpression="SecurityLevel"></asp:BoundField> 
        <asp:CommandField ShowEditButton="True"></asp:CommandField> 
        <asp:CommandField ShowDeleteButton="True"></asp:CommandField> 
    </Columns> 
</asp:GridView> 
</form> 
</body> 
</html>

这是我的代码:

public partial class frmManageUsers : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
    } 

    protected void btnAddUser_Click1(object sender, EventArgs e) 
    { 
        //string userName, userPassword; 

        if (txtUserName.Text == "" || txtUserName.Text == null) 
        { 
            lblError.Text = ("User Name may not be empty"); 
            lblError.ForeColor = System.Drawing.Color.Red; 
            return; 
        } 

        if (txtPassword.Text == "" || txtPassword.Text == null) 
        { 
            lblError.Text = ("Password may not be empty"); 
            lblError.ForeColor = System.Drawing.Color.Red; 
            return; 
        } 

        using (OleDbConnection conn = new OleDbConnection("PayrollSystem_DBConnectionString")) 
        { 
            string insert = "Insert INTO tblUserLogin (UserName, UserPassword, SecurityLevel) Values (@UserName, @UserPassword, @SecurityLevel)"; 
            OleDbCommand cmd = new OleDbCommand(insert, conn); 
            cmd.Parameters.Add("@UserName", txtUserName.Text); 
            cmd.Parameters.Add("@UserPassword", txtPassword.Text); 
            cmd.Parameters.Add("@SecurityLevel", drpdwnlstSecurityLevel.SelectedValue);   
            cmd.ExecuteNonQuery();       
        } 

        Session["UserName"] = txtUserName.Text; 
        Session["Password"] = txtPassword.Text; 
        Session["SecurityLevel"] = drpdwnlstSecurityLevel.SelectedValue; 
        Server.Transfer("frmManageUsers.aspx"); 

        //Server.Transfer("grdUserLogin");  
    } 
}

2 个答案:

答案 0 :(得分:2)

您实际上需要将有效的连接字符串传递给连接构造函数:

OleDbConnection conn = new OleDbConnection("PayrollSystem_DBConnectionString")
// this is not an actual connection string

查看Connection Strings以帮助您建立有效的连接字符串。

所做的看起来像是你试图从web.config文件中提取连接字符串。像这样的东西会起作用:

using System.Configuration;

// ....

OleDbConnection conn = 
    new OleDbConnection(ConfigurationManager.ConnectionStrings["PayrollSystem_DBConnectionString"].ConnectionString);

答案 1 :(得分:0)

我猜你应该使用变量而不是字符串文字。尝试

using (OleDbConnection conn = new OleDbConnection(PayrollSystem_DBConnectionString))

PayrollSystem_DBConnectionString是包含连接字符串值的字符串变量。