createFolding
我正在我的类中创建一个名为 的函数clsFolding
。我通过这个函数在数据库中插入一些值createFolding
。所以,我int status_id
从函数返回(如果正常则返回 1,如果错误则返回 0)。如果出现错误(if),我还想从函数返回异常消息,status_id =0
但我不知道如何从函数返回多个值。这是我在课堂上完成的代码clsFolding
public class clsFolding
{
public static string ConStr = ConfigurationManager.ConnectionStrings["FazalConstructions.Properties.Settings.ConnString"].ConnectionString;
public static SqlConnection con;
public static SqlCommand cmd = new SqlCommand();
public static int status_id;
public static Exception ex;
public static int createFolding(int id, string name, int qty, string narration, DateTime dt)
{
try
{
con = new SqlConnection(ConStr);
con.Open();
cmd = new SqlCommand("INSERT INTO tblFolding(FoldingID, Name,Quantity,Narration,DateTime)VALUES(@id, @name, @qty, @narration,@dt)", con);
cmd.Parameters.AddWithValue("@id", id);
cmd.Parameters.AddWithValue("@name", name);
cmd.Parameters.AddWithValue("@qty", qty);
cmd.Parameters.AddWithValue("@narration", narration);
cmd.Parameters.AddWithValue("@dt", dt);
cmd.ExecuteNonQuery();
status_id = 1;
return status_id;
}
catch (Exception ex)
{
status_id = 0;
return status_id;
}
...
}
...
}
Run Code Online (Sandbox Code Playgroud)
这是我在表单中用于从类获取数据的代码
clsStockManagement.updateStock(
int.Parse(TransactionID.Text), int.Parse(projectID.Text),
int.Parse(cbItem.SelectedValue.ToString()),
int.Parse(tbQty.Text), DateTimee.Value);
if (clsStockManagement.status_id==1)
{
MessageBox.Show("Process Successful", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else if (clsStockManagement.status_id==0)
{
MessageBox.Show("Process UnSuccessful", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
Run Code Online (Sandbox Code Playgroud)
我认为你忽略了例外的要点。你很少能在它们被扔的地方接住它们。例外的要点是让它们冒出来。如果做得正确,您的createFolding()
方法不需要任何异常处理或返回代码。它简化为:
public class clsFolding
{
//no need for this to be public
private static string ConStr = ConfigurationManager.ConnectionStrings["FazalConstructions.Properties.Settings.ConnString"].ConnectionString;
public static void createFolding(int id, string name, int qty, string narration, DateTime dt)
{
string sql = "INSERT INTO tblFolding(FoldingID, Name,Quantity,Narration,DateTime)VALUES(@id, @name, @qty, @narration,@dt)";
//fyi: a static SqlConnection reference is a VERY BAD IDEA
// use a new variable in each method call
using(var con = new SqlConnection(ConStr))
using(var cmd = new SqlCommand(sql, con))
{
cmd.Parameters.AddWithValue("@id", id);
cmd.Parameters.AddWithValue("@name", name);
cmd.Parameters.AddWithValue("@qty", qty);
cmd.Parameters.AddWithValue("@narration", narration);
cmd.Parameters.AddWithValue("@dt", dt);
con.Open();
cmd.ExecuteNonQuery();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我还会对这些 AddWithValue() 调用做一些事情。
现在,如果失败,您希望显示一个消息框。没关系。去做。听起来是个好主意。只需在调用该方法的代码中执行即可:
try
{
clsFolding.createFolding( /* parameters here */);
MessageBox.Show("Process Successful", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (SqlException)
{
MessageBox.Show("Process UnSuccessful, could not write to database", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
catch (Exception Ex)
{
MessageBox.Show("Process UnSuccessful, a non-database error occured", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
18521 次 |
最近记录: |