代码:
public void ExecuteSQL(string sql, params SqlParameter[] parameter)
{
try
{
conn.Open();
com = new SqlCommand(sql,conn);
foreach (SqlParameter param in parameter)
{
com.Parameters.Add(param);//将参数添加到Parameters集合中
}
com.ExecuteNonQuery();//执行SQL
}
finally { conn.Close(); }
}
//调用方法关键代码:
string sql = "insert into student(stuid,stuname,password,gender) values(@id,@name,@pwd,@gender)";
SqlParameter p1 = new SqlParameter("@id",id);
SqlParameter p2 = new SqlParameter("@name",name);
SqlParameter p3 = new SqlParameter("@pwd",id);
SqlParameter p4 = new SqlParameter("@gender",gender);
dg.ExecuteSQL(sql,p1,p2,p3,p4);
MessageBox.Show("添加学生成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.Close();
FrmStuManage form = new FrmStuManage();
form.Show();
提示添加成功,并且在DataGridView中显示,但查看student表却没有刚增加的记录,调试过sql无问题,何解???
能说明白点吗?或者举例,我写web程序是都是这么用的喔,为什么到WinForm就不行了呢?
追答string strSql = "insert into tb_News(Ntitle,NContent,Add_User,Add_Time) values(@Ntitle,@NContent,@Add_User,@Add_Time)";
string strconn = ConfigurationSettings.AppSettings["dsn"];
//连接本地计算机的TMS数据库
SqlConnection cn = new SqlConnection(strconn);
cn.Open();
//利用Command对象调用存储过程
SqlCommand cm = new SqlCommand(strSql, cn);
//将命令类型转为存储类型
cm.CommandType = CommandType.Text;
//往存储过程中添加参数
cm.Parameters.Add("@Ntitle", SqlDbType.NVarChar, 50);//数据库字段长度必须是大于等于50的
cm.Parameters.Add("@NContent", SqlDbType.NText);
cm.Parameters.Add("@Add_User", SqlDbType.NVarChar, 50);
cm.Parameters.Add("@Add_Time", SqlDbType.NVarChar, 50);
//给存储过程的参数付值
cm.Parameters["@Ntitle"].Value = tbtitle.Text.ToString().Trim();
cm.Parameters["@NContent"].Value = FCKeditor1.Value.ToString().Trim();
cm.Parameters["@Add_User"].Value = Session["uid"].ToString();
cm.Parameters["@Add_Time"].Value = lbaddtime.Text.ToString().Trim();
cm.ExecuteNonQuery();
FrmStuManage form = new FrmStuManage();
form.Show();
这代码刷新了DataGridView了,有刚添加的记录,但是数据库却没有
在数据库里用sql语句查看那个表