我有一个表单,在用户输入用户名和密码并单击添加按钮后,它应该将其添加到我的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>
</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");
}
}
答案 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
是包含连接字符串值的字符串变量。