0

关于我在做什么的一点背景。我有一个带有点击调用的按钮,可以将我带到这段代码。

  static public DataSet shareFiles(TransitoryRegObj argTransRegObj)
{
    string sqlString = "do_share_files"; // it's a stored procedure
    SqlConnection cnn = new SqlConnection(masterConn);
    SqlCommand comm = new SqlCommand(sqlString, cnn);
    DataSet ds = new DataSet();

    try
    {
        cnn.Open();
        SqlCommand Comm = new SqlCommand(sqlString, cnn);
        Comm.CommandType = CommandType.StoredProcedure;


        comm.Dispose();
        cnn.Close();

        return ds;
    }
    catch (Exception ex)
    {
        // log here should anything go wrong with anything
        //  lblmessage.Text = "Error: " + ex.Message;



        if (comm != null)
            comm.Dispose();

        if (cnn != null)
            cnn.Close();

        DataTable dt = new DataTable("ExceptionTable");
        dt.Columns.Add("ExceptionMessage");
        dt.Rows.Add(ex.Message);
        ds = new DataSet();
        ds.Tables.Add(dt);
        return ds;
    }
}

代码运行良好,但没有任何内容写入数据库。这是 do_share_files 存储过程。

  ALTER PROCEDURE [dbo].[do_share_files] 
   --@device_id bigint, @user_id bigint, @file_name varchar(50),@full_up_path varchar(50), @upLength varchar(30)
    --,@mime_type varchar(20), @filedate varchar(30)

    AS
    BEGIN
        insert into [user_files] (device_id, user_id, original_name, original_path, up_path, content_type, up_dt)
        values (17, 30, 'test.pg', 'test.pg', 'test.pg','test.pg', '2012-11-15 03:58:06.043')


    END

我现在有静态值,因为我只是想让它运行到存储过程。我是 asp.net 的新手,不知道我做错了什么。任何帮助,将不胜感激。

谢谢!

4

2 回答 2

0

你可以从这个开始:

static public DataSet shareFiles(TransitoryRegObj argTransRegObj)
{
    string sqlString = "do_share_files"; // it's a stored procedure
    DataSet ds = new DataSet();

    try
    {
        using (var cnn = new SqlConnection(masterConn))
        { 
            SqlCommand comm = new SqlCommand(sqlString, cnn);
            comm.CommandType = CommandType.StoredProcedure;
            cnn.Open();
            comm.ExecuteNonQuery ();

总结一下:

  1. Comm并且comm是不同的命令;
  2. 要运行 proc,您需要调用ExecuteNonQuery或其他Execute方法。
于 2012-12-04T19:07:28.843 回答
0

您的代码几乎没有错误 1. 我不明白您为什么要使用此行两次

SqlCommand comm = new SqlCommand(sqlString, cnn);

2.您没有执行程序,这是主要问题

static public DataSet shareFiles(TransitoryRegObj argTransRegObj)
{
try
{
string sqlString = "do_share_files"; // it's a stored procedure
SqlConnection cnn = new SqlConnection(masterConn);
SqlCommand comm = new SqlCommand(sqlString, cnn);
DataSet ds = new DataSet();  
    cnn.Open();
    Comm.CommandType = CommandType.StoredProcedure;
    comm.ExecuteNonQuery();
    comm.Dispose();
    cnn.Close();

    return ds;
}
catch (Exception ex)
{
   //something here
}

}

于 2012-12-04T19:10:21.247 回答