C# ASP.NET未向SQL server发送命令
我被指派在我的学校为一个俱乐部创建一个网站。我选择ASP作为语言,但sql函数有问题。如果您转到上面的网站,单击“加入当前liveclub会话”,并在顶部的文本框中填写一堆垃圾,然后单击“加入”,则会引发SQL异常。代码如下: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;
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对象的位置?