要求在存储一个存储过程中实现增,删,该,查的操作,,单一的学生表ALTER proc [dbo].[Students]( @typeint int ,--0,表示添加,1表示更新,2,表示删除,3表示查询 @StudentID int, @StudentNumber int, @StudentName varchar(50), @StudentSex varchar(10), @StudentClass varchar(50), @StudentNianJi varchar(50), @StudentCS datetime, @StudentAdd varchar(50), @StudentPhone varchar(50), @StudentBeiZhu text, @retint int output, @retval nvarchar(100) output)asdeclare @intranscount int,@blf_alph nvarchar(50),@bsl_brief nvarchar(4000) set @intranscount=@@trancount if @typeint=0 begin if exists (select * from StudenInfo where StudentNumber=@StudentNumber) set @retval='已经存在名称为['+@StudentNumber+']的学生编号,添加失败!' set @retint=-1 end if @intranscount=0 begin transaction insert into StudenInfo (StudentNumber,StudentName,StudentSex,StudentClass,StudentNianJi,StudentCS,StudentAdd,StudentPhone,StudentBeiZhu) values(@StudentNumber,@StudentName,@StudentSex,@StudentClass,@StudentNianJi,@StudentCS,@StudentAdd,@StudentPhone,@StudentBeiZhu) if @@error<>0 select @bsl_brief = '向数据库中插入了一行学生编号为['+@StudentNumber+'],学生名称为【'+@StudentNumber+'】的数据,添加成功!' if @@trancount>@intranscount commit transaction set @retint=1 return 1 --判断更新 if @typeint=1 if not exists(select * from StudenInfo where StudentNumber=@StudentNumber) set @retval='不存在要更新的学生信息,更新失败!' set @retint =-1 return -1 --更新的操作 if exists(select * from StudenInfo where StudentNumber<>@StudentNumber and StudentID=@StudentID) set @retval='已存在名称为['+ @StudentNumber+']的学生编号,更新失败' set @retint =-1 return -1 --执行的操作 if exists(select * from StudenInfo where StudentNumber<>@StudentNumber and StudentID<>@StudentID) select @bsl_brief = '学生编号将由['+StudentNumber+'] 更改为 ['+@StudentNumber+'],更新成功,' from StudenInfo where StudentNumber=@StudentNumber update StudenInfo set StudentNumber=@StudentNumber, StudentName=@StudentNumber, StudentSex=@StudentSex, StudentClass=@StudentClass, StudentNianJi=@StudentNianJi, StudentCS=@StudentCS, StudentAdd=@StudentAdd, StudentPhone=@StudentPhone, StudentBeiZhu=@StudentBeiZhu where StudentID=@StudentID if @@trancount>@intranscount commit transaction set @retint=1 return 1 --执行删除的操作 if @typeint=2 if exists(select * from StudenInfo where StudentID<>@StudentID) set @retval='不存在要删除的信息' set @retint=-1 return -1 if @intranscount=0 begin transaction if exists(select * from StudenInfo where StudentID=@StudentID) select @bsl_brief = '成功删除了编号为['+@StudentID+'],学号为['+@StudentNumber+']的学生信息' delete from StudenInfo where StudentID=@StudentID if @@trancount>@intranscount commit transaction set @retint=1 return 1 ----执行查询的操作 if @typeint=3 select * from StudenInfo if @@trancount>@intranscount commit transaction set @retint=1 return 1
我在vs中执行的时候我觉得逻辑上是没有我在vs中执行的时候我觉得逻辑上是没有错的,但报错
SqlConnection conn = new SqlConnection(ConfigurationManager.AppSettings["SQLConnString"].ToString()); conn.Open(); string sql= "Students"; SqlCommand com = new SqlCommand(sql, conn); com.CommandType = CommandType.StoredProcedure;
SqlParameter[] Parameterss = { new SqlParameter("@typeint",SqlDbType.Int), new SqlParameter("@StudentNumber",SqlDbType.Int), new SqlParameter("@StudentName",SqlDbType.VarChar,50), new SqlParameter("@StudentSex",SqlDbType.VarChar,10), new SqlParameter("@StudentClass",SqlDbType.VarChar,50), new SqlParameter("@StudentNianJi",SqlDbType.VarChar,50), new SqlParameter("@StudentCS",SqlDbType.DateTime), new SqlParameter("@StudentAdd",SqlDbType.VarChar,50), new SqlParameter("@StudentPhone",SqlDbType.VarChar,50), new SqlParameter("@StudentBeiZhu",SqlDbType.Text), new SqlParameter("@retint",SqlDbType.Int), new SqlParameter("@retval",SqlDbType.VarChar,100) }; Parameterss[0].Value=0; Parameterss[1].Value = TextBox1.Text; Parameterss[2].Value = TextBox2.Text; Parameterss[3].Value = TextBox3.Text; Parameterss[4].Value = TextBox4.Text; Parameterss[5].Value = TextBox5.Text; Parameterss[6].Value = TextBox6.Text; Parameterss[7].Value = TextBox7.Text; Parameterss[8].Value = TextBox8.Text; Parameterss[9].Value = TextBox9.Text; Parameterss[10].Direction= ParameterDirection.Output; Parameterss[11].Direction = ParameterDirection.Output; com.Parameters.Add(Parameterss[0]); com.Parameters.Add(Parameterss[1]); com.Parameters.Add(Parameterss[2]); com.Parameters.Add(Parameterss[3]); com.Parameters.Add(Parameterss[4]); com.Parameters.Add(Parameterss[5]); com.Parameters.Add(Parameterss[6]); com.Parameters.Add(Parameterss[7]); com.Parameters.Add(Parameterss[8]); com.Parameters.Add(Parameterss[9]); com.Parameters.Add(Parameterss[10]); com.Parameters.Add(Parameterss[11]); com.ExecuteNonQuery(); if (com.ExecuteNonQuery() > 0) { if (int.Parse(Parameterss[10].Value.ToString()) > 0) { Response.Write(Parameterss[11].Value.ToString()); Response.Write("成功"); } else { Response.Write(Parameterss[11].Value.ToString()); Response.Write("失败"); } } else { Response.Write("数据库执行不成"); }
我在vs中执行的时候我觉得逻辑上是没有我在vs中执行的时候我觉得逻辑上是没有错的,但报错
SqlConnection conn = new SqlConnection(ConfigurationManager.AppSettings["SQLConnString"].ToString()); conn.Open(); string sql= "Students"; SqlCommand com = new SqlCommand(sql, conn); com.CommandType = CommandType.StoredProcedure;
SqlParameter[] Parameterss = { new SqlParameter("@typeint",SqlDbType.Int), new SqlParameter("@StudentNumber",SqlDbType.Int), new SqlParameter("@StudentName",SqlDbType.VarChar,50), new SqlParameter("@StudentSex",SqlDbType.VarChar,10), new SqlParameter("@StudentClass",SqlDbType.VarChar,50), new SqlParameter("@StudentNianJi",SqlDbType.VarChar,50), new SqlParameter("@StudentCS",SqlDbType.DateTime), new SqlParameter("@StudentAdd",SqlDbType.VarChar,50), new SqlParameter("@StudentPhone",SqlDbType.VarChar,50), new SqlParameter("@StudentBeiZhu",SqlDbType.Text), new SqlParameter("@retint",SqlDbType.Int), new SqlParameter("@retval",SqlDbType.VarChar,100) }; Parameterss[0].Value=0; Parameterss[1].Value = TextBox1.Text; Parameterss[2].Value = TextBox2.Text; Parameterss[3].Value = TextBox3.Text; Parameterss[4].Value = TextBox4.Text; Parameterss[5].Value = TextBox5.Text; Parameterss[6].Value = TextBox6.Text; Parameterss[7].Value = TextBox7.Text; Parameterss[8].Value = TextBox8.Text; Parameterss[9].Value = TextBox9.Text; Parameterss[10].Direction= ParameterDirection.Output; Parameterss[11].Direction = ParameterDirection.Output; com.Parameters.Add(Parameterss[0]); com.Parameters.Add(Parameterss[1]); com.Parameters.Add(Parameterss[2]); com.Parameters.Add(Parameterss[3]); com.Parameters.Add(Parameterss[4]); com.Parameters.Add(Parameterss[5]); com.Parameters.Add(Parameterss[6]); com.Parameters.Add(Parameterss[7]); com.Parameters.Add(Parameterss[8]); com.Parameters.Add(Parameterss[9]); com.Parameters.Add(Parameterss[10]); com.Parameters.Add(Parameterss[11]); com.ExecuteNonQuery(); if (com.ExecuteNonQuery() > 0) { if (int.Parse(Parameterss[10].Value.ToString()) > 0) { Response.Write(Parameterss[11].Value.ToString()); Response.Write("成功"); } else { Response.Write(Parameterss[11].Value.ToString()); Response.Write("失败"); } } else { Response.Write("数据库执行不成"); }
而是在考考 csdn 上的程序员对 [乱码] 的解读能力。