求讲解

WW_DA 2012-06-06 10:32:23
SqlCommand cmd = new SqlCommand("UPDATE tb_student SET student_grade=99 WHERE student_id=@id", sc);
cmd.Parameters.Add("@id", SqlDbType.Int).Value = 1;

我在写修改数据库的代码 ,写完后发现运行后没反应,整个代码就这点看不懂特别是:WHERE student_id=@id", sc);
cmd.Parameters.Add("@id", SqlDbType.Int).Value = 1;

求大神讲解;
...全文
112 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
WW_DA 2012-06-06
  • 打赏
  • 举报
回复
搞出来了 谢谢各位大神;
WW_DA 2012-06-06
  • 打赏
  • 举报
回复
那是不是先要把student_id=1设置好啊
__天涯寻梦 2012-06-06
  • 打赏
  • 举报
回复
student_id 是 null
sql 语句里
WHERE student_id = 1
这个条件就不成立,SET 就不会执行
WW_DA 2012-06-06
  • 打赏
  • 举报
回复
student_id=null,student_grade还是没变
__天涯寻梦 2012-06-06
  • 打赏
  • 举报
回复
代码有没执行到 catch 里面? 数据库表里有没有 student_id 为 1 的记录?有的话那条记录的 student_grade 是不是已经是 99 了?
WW_DA 2012-06-06
  • 打赏
  • 举报
回复
还是没反应
这是全部代码:
static void Main(string[] args)
{
string connection = "server=.;database=db_test;Trusted_Connection=true";
SqlConnection sc = new SqlConnection(connection);
try
{
sc.Open();
SqlCommand cmd = new SqlCommand("UPDATE tb_student SET student_grade=99 WHERE student_id=@id", sc);
cmd.Parameters.Add("@id", SqlDbType.Int).Value = 1;
int i = cmd.ExecuteNonQuery();
if (i > 0)
Console.WriteLine("修改记录成功");
}
catch (Exception ex)
{
Console.WriteLine("打开数据库错误:{0}", ex.Message);
}
finally
{
sc.Close();
}
System .Console .ReadLine ();

}
__天涯寻梦 2012-06-06
  • 打赏
  • 举报
回复
cmd.Parameters.Add("@id", SqlDbType.Int).Value = 1;
这行改变一下
var param = new SqlParameter();
param.ParameterName = "@id";
param.SqlDbType = SqlDbType.Int;
param.Value = 1;
cmd.Parameters.Add(param);

试试有没反应
WW_DA 2012-06-06
  • 打赏
  • 举报
回复
麻烦告诉我我之前的代码运行为什么没反应吗?
__天涯寻梦 2012-06-06
  • 打赏
  • 举报
回复
@是个特殊标记,表示后面跟的是sql参数名,既然有了sql参数名,就要添加sql参数值,cmd.Parameters.Add 方法可以添加一个sql参数值,方法里先指定sql参数名也就是@id,再指定类型,同时这个方法返回创建好的 SqlParameter 实例,对这个实例可以赋sql参数具体值,简便写法就可以直接点Value等于什么什么
  • 打赏
  • 举报
回复
你上面已经添加并赋值了
// Update the demographics for a store, which is stored 
// in an xml column.
string commandText = "UPDATE Sales.Store SET Demographics = @demographics "
+ "WHERE CustomerID = @ID;";

using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand command = new SqlCommand(commandText, connection);
command.Parameters.Add("@ID", SqlDbType.Int);
command.Parameters["@ID"].Value = customerID;

// Use AddWithValue to assign Demographics.
// SQL Server will implicitly convert strings into XML.
command.Parameters.AddWithValue("@demographics", demoXml);

try
{
connection.Open();
Int32 rowsAffected = command.ExecuteNonQuery();
Console.WriteLine("RowsAffected: {0}", rowsAffected);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
Mirror然 2012-06-06
  • 打赏
  • 举报
回复
WHERE student_id=@id"

更新判断的子句
cmd.Parameters.Add("@id", SqlDbType.Int).Value = 1;
UPDATE tb_student SET student_grade=99 WHERE student_id=1

相当已经添加了返回参数 查看MSDN
WW_DA 2012-06-06
  • 打赏
  • 举报
回复
怎么添加参数,并给参数赋值

又在哪加
bdmh 2012-06-06
  • 打赏
  • 举报
回复
@id是个参数, Parameters 就是管理参数的,然后为他赋值

基本概念太差,好好看看帮助
  • 打赏
  • 举报
回复
添加参数,并给参数赋值

真正执行的sql语句就是 UPDATE tb_student SET student_grade=99 WHERE student_id=1

而@id也就相当于占位符吧

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧