我有default.aspx
页面,其中放置了CreateUserWizard1
。
SqlConnection con = new SqlConnection("server=.;database=test;integrated security=true");
SqlCommand cmd = new SqlCommand();
并且,在Continue_Click
事件中,我已经放置了一个像这样的代码
protected void ContinueButton_Click(object sender, EventArgs e)
{
string un = CreateUserWizard1.UserName.ToString();
try
{
con.Open();
cmd.CommandText = "create table " + un + " (id int IDENTITY(1,1) primary key,username varchar(50),fname varchar(50),mname varchar(50),lname varchar(50),mobile varchar(10),college varchar(5000),school varchar(5000),working varchar(5000),prevworking varchar(5000),skill varchar(MAX),interest varchar(MAX),achievment varchar(MAX),image varchar(MAX) default '~/image/default_male.jpg')";
cmd.Connection = con;
cmd.ExecuteNonQuery();
}
Catch (Exception a)
{
Response.write(a.Message);
}
}
以前工作正常,但现在它正在给出错误并执行catch块说明
Incorrect syntax near '('.
请您帮我找到问题并给我解决方案吗?
machine.XML的其他一些细节是
<connectionStrings>
<add name="LocalSqlServer" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient"/>
</connectionStrings>
<membership>
<providers>
<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="LocalSqlServer" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="/" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" passwordStrengthRegularExpression=""/>
</providers>
</membership>
答案 0 :(得分:0)
如果您的变量un
来自不受信任的来源,则使用它来构建命令字符串并不是一个好主意。我的第一个猜测可能是,该变量的值包含sql-query的非法字符?
我认为您可以使用SqlCommand参数导入该值。基本上,您使用sql参数替换动态字符串构建,然后为命令定义:
CommandString中:
cmd.CommandText = "create table @TableName (id int IDENTITY(1,1) primary key,username varchar(50),fname varchar(50),mname varchar(50),lname varchar(50),mobile varchar(10),college varchar(5000),school varchar(5000),working varchar(5000),prevworking varchar(5000),skill varchar(MAX),interest varchar(MAX),achievment varchar(MAX),image varchar(MAX) default '~/image/default_male.jpg')";
导入参数(您需要在调用cmd.ExecuteNonQuery();
之前执行此操作):
cmd.Parameters.AddWithValue("@TableName", un);
我希望这会有所帮助,请告诉我们是否有任何改变:)