C# ASP.NET未向SQL server发送命令

C# ASP.NET未向SQL server发送命令,c#,asp.net,sql,sql-server-2012,C#,Asp.net,Sql,Sql Server 2012,我被指派在我的学校为一个俱乐部创建一个网站。我选择ASP作为语言,但sql函数有问题。如果您转到上面的网站,单击“加入当前liveclub会话”,并在顶部的文本框中填写一堆垃圾,然后单击“加入”,则会引发SQL异常。代码如下: UName = TextBox1.Text; CompN = TextBox2.Text; TMin = TextBox3.Text; Name = TextBox4.Text; TextBox1.Visible = false;

我被指派在我的学校为一个俱乐部创建一个网站。我选择ASP作为语言,但sql函数有问题。如果您转到上面的网站,单击“加入当前liveclub会话”,并在顶部的文本框中填写一堆垃圾,然后单击“加入”,则会引发SQL异常。代码如下:

    UName = TextBox1.Text;
    CompN = TextBox2.Text;
    TMin = TextBox3.Text;
    Name = TextBox4.Text;
    TextBox1.Visible = false;
    TextBox2.Visible = false;
    TextBox3.Visible = false;
    TextBox4.Visible = false;
    string sql = "INSERT INTO table_name values (" + Name + "," + UName + "," + CompN +     "," + TMin + "," + "NA" + "," + 0 + ")";
    conn.Open();
    try
    {
        SqlCommand cmd = new SqlCommand(sql, conn);
        cmd.ExecuteNonQuery();
    }
    catch
    {
        Response.Write("<script>alert('SQL error: try again later')</script>");
    }
    finally
    {
        conn.Close();
    }
UName=TextBox1.Text;
CompN=TextBox2.Text;
TMin=TextBox3.Text;
Name=TextBox4.Text;
TextBox1.Visible=false;
TextBox2.Visible=false;
TextBox3.Visible=false;
TextBox4.Visible=false;
string sql=“插入到表名称值(“+name+”、“+UName+”、“+CompN+”、“+TMin+”、“+NA+”、“+0+”);
conn.Open();
尝试
{
SqlCommand cmd=新的SqlCommand(sql,conn);
cmd.ExecuteNonQuery();
}
接住
{
Write(“警报('SQL错误:请稍后重试”);
}
最后
{
康涅狄格州关闭();
}
对于任何提出要求的人,我110%确定这不是连接字符串,因为它在网站的日历页面上运行良好

以下是有关该项目的其他一些相关信息:

  • 我只使用C#和HTML(CSS和其他设计工作稍后将由其他人完成)
  • 服务器使用SQL server 2012

问题:您没有将
字符串
类型
VARCHAR,NVARCHAR
列括在
单引号内

解决方案:您需要将
字符串
类型括在
单引号内

试试这个:

sqlCmd.CommandText = "INSERT INTO tablename(name) VALUES('yourname');
建议:您应该使用
参数化查询
来避免
SQL注入攻击

完成代码:使用参数化sql查询

string sql = "INSERT INTO table_name values (@Name,@UName,@CompN,@TMin,@value1,@value2)";
conn.Open();
try
{
    SqlCommand cmd = new SqlCommand(sql, conn);
    cmd.Parameters.AddWithValue("@Name",Name);  
    cmd.Parameters.AddWithValue("@UName",UName);
    cmd.Parameters.AddWithValue("@CompN",CompN);
    cmd.Parameters.AddWithValue("@TMin",TMin);
    cmd.Parameters.AddWithValue("@value1","NA");
    cmd.Parameters.AddWithValue("@value2",0);
    cmd.ExecuteNonQuery();
}

问题:您没有将
字符串
类型
VARCHAR,NVARCHAR
列括在
单引号内

解决方案:您需要将
字符串
类型括在
单引号内

试试这个:

sqlCmd.CommandText = "INSERT INTO tablename(name) VALUES('yourname');
建议:您应该使用
参数化查询
来避免
SQL注入攻击

完成代码:使用参数化sql查询

string sql = "INSERT INTO table_name values (@Name,@UName,@CompN,@TMin,@value1,@value2)";
conn.Open();
try
{
    SqlCommand cmd = new SqlCommand(sql, conn);
    cmd.Parameters.AddWithValue("@Name",Name);  
    cmd.Parameters.AddWithValue("@UName",UName);
    cmd.Parameters.AddWithValue("@CompN",CompN);
    cmd.Parameters.AddWithValue("@TMin",TMin);
    cmd.Parameters.AddWithValue("@value1","NA");
    cmd.Parameters.AddWithValue("@value2",0);
    cmd.ExecuteNonQuery();
}

您的sql字符串错误

UName = TextBox1.Text;
CompN = TextBox2.Text;
TMin = TextBox3.Text;
Name = TextBox4.Text;
TextBox1.Visible = false;
TextBox2.Visible = false;
TextBox3.Visible = false;
TextBox4.Visible = false;
string sql = "INSERT INTO table_name values ('" + Name + "','" + UName + "','" + CompN + "','" + TMin + "','NA', 0 )";
conn.Open();
try
{
    SqlCommand cmd = new SqlCommand(sql, conn);
    cmd.ExecuteNonQuery();
}
catch
{
    Response.Write( "<script>alert( 'SQL error: try again later' )</script>" );
}
finally
{
    conn.Close();
}
UName=TextBox1.Text;
CompN=TextBox2.Text;
TMin=TextBox3.Text;
Name=TextBox4.Text;
TextBox1.Visible=false;
TextBox2.Visible=false;
TextBox3.Visible=false;
TextBox4.Visible=false;
string sql=“插入到表名称值(“+name+”、“+UName+”、“+CompN+”、“+TMin+”、“NA”、0)”;
conn.Open();
尝试
{
SqlCommand cmd=新的SqlCommand(sql,conn);
cmd.ExecuteNonQuery();
}
接住
{
Write(“警报('SQL错误:请稍后再试”);
}
最后
{
康涅狄格州关闭();
}

您的sql字符串错误

UName = TextBox1.Text;
CompN = TextBox2.Text;
TMin = TextBox3.Text;
Name = TextBox4.Text;
TextBox1.Visible = false;
TextBox2.Visible = false;
TextBox3.Visible = false;
TextBox4.Visible = false;
string sql = "INSERT INTO table_name values ('" + Name + "','" + UName + "','" + CompN + "','" + TMin + "','NA', 0 )";
conn.Open();
try
{
    SqlCommand cmd = new SqlCommand(sql, conn);
    cmd.ExecuteNonQuery();
}
catch
{
    Response.Write( "<script>alert( 'SQL error: try again later' )</script>" );
}
finally
{
    conn.Close();
}
UName=TextBox1.Text;
CompN=TextBox2.Text;
TMin=TextBox3.Text;
Name=TextBox4.Text;
TextBox1.Visible=false;
TextBox2.Visible=false;
TextBox3.Visible=false;
TextBox4.Visible=false;
string sql=“插入到表名称值(“+name+”、“+UName+”、“+CompN+”、“+TMin+”、“NA”、0)”;
conn.Open();
尝试
{
SqlCommand cmd=新的SqlCommand(sql,conn);
cmd.ExecuteNonQuery();
}
接住
{
Write(“警报('SQL错误:请稍后再试”);
}
最后
{
康涅狄格州关闭();
}

能否将代码张贴在实例化conn对象的位置?能否将代码张贴在实例化conn对象的位置?