【问题标题】:ASP.NET is not sending a command to a SQL serverASP.NET 没有向 SQL 服务器发送命令
【发布时间】:2014-01-10 09:48:42
【问题描述】:

我被分配为我学校的一个俱乐部创建一个网站kmhsmc.somee.com。我选择 ASP 作为语言,但我遇到了 sql 函数的问题。如果你去上面的网站点击join current liveclub session,然后在顶部的文本框里填上一堆垃圾然后点击join,它会抛出一个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();
    }

对于任何询问的人,我 110% 确定它不是连接字符串,因为它在网站的日历页面上运行良好。

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

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

【问题讨论】:

  • 你能贴出你实例化 conn 对象的代码吗?

标签: c# asp.net sql sql-server-2012


【解决方案1】:

你的 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();
}

【讨论】:

    【解决方案2】:

    问题:您没有将String 类型的VARCHAR,NVARCHAR 列包含在single quotes 中。
    解决方案:您需要将String 包含在内在single quotes 中输入。

    试试这个:

    sqlCmd.CommandText = "INSERT INTO tablename(name) VALUES('yourname');
    

    建议:你应该使用Parameterised queries来避免SQL injection attacks

    完整代码:使用parameterised sql queries

    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();
    }
    

    【讨论】:

      猜你喜欢
      • 2016-01-23
      • 1970-01-01
      • 2017-01-01
      • 1970-01-01
      • 2016-04-27
      • 2018-01-03
      • 2019-01-15
      • 2013-08-22
      • 1970-01-01
      相关资源
      最近更新 更多