我有14个表,通常的sql常用命令参数,插入,更新等。初学者,像我一样,将拥有主类中的所有方法,就像这样......
namespace TestApp
{
public partial class TestNamTxt : Form
{
private OleDbConnection myCon;
public TestNamTxt()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
myCon = new OleDbConnection();
myCon.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C\:...
Database2.mdb")
myCon.Open();
ds1 = new DataSet();
string sql = "SELECT * FROM Table1";
da = new System.Data.OleDb.OleDbDataAdapter(sql,myCon);
da.Fill(ds1, "Foo");
myCon.Close();
};
private void Insertbtn_Click(object sender, EventArgs e)
{
OleDbCommand cmd = new OleDbCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "INSERT INTO Table1 (ID, Name)";
cmd.Parameters.AddWithValue("@ID", IDTxt.Text);
cmd.Parameters.AddWithValue("@Name", NameTxt.Text);
cmd.Connection=myCon;
myCon.Open();
cmd.ExecuteNonQuery();
myCon.Close();
}
}
我可以将上面的代码放在另一个类中,而在Insertbtn方法中使用这个方法吗?是否有任何教程或者某人可以证明这个是如何完成的?我不确定我在这里给出的描述是什么?提前致谢
答案 0 :(得分:2)
当然可以。您可以将GetConnection和Insert放入单独的类中(甚至可以在Form中保留,但我不建议这样做)并按如下方式使用它们:
public static OleDbConnection GetConnection()
{
var myCon = new OleDbConnection();
myCon.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C\:... Database2.mdb";
return myCon;
}
public static void Insert(string id, string name)
{
var con = GetConnection();
OleDbCommand cmd = new OleDbCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "INSERT INTO Table1 (ID, Name)";
cmd.Parameters.AddWithValue("@ID", id);
cmd.Parameters.AddWithValue("@Name", name);
cmd.Connection = con;
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
private void Insertbtn_Click(object sender, EventArgs e)
{
Insert(IDTxt.Text, NameTxt.Text);
}
如果需要,您还可以将表名指定为方法参数。
答案 1 :(得分:1)
如果我正确理解你的问题 那么你可以做到这一点。 基本上您正在尝试使用DAL(数据访问层)这个术语,
很简单, 将上面的代码放到另一个类中,然后在该类中创建该类的对象并使用它。public class DataClass
{
public static bool AddEmp(string id, string name)
{
bool result;
OleDbCommand cmd = new OleDbCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "INSERT INTO Table1 (ID, Name)";
cmd.Parameters.AddWithValue("@ID", id);
cmd.Parameters.AddWithValue("@name", name);
cmd.Connection=myCon;
try
{
myCon.Open();
cmd.ExecuteNonQuery();
result = true;
}
catch
{
result = false;
}
myCon.Close();
return result;
}
然后在插入函数中这样做
private void Insertbtn_Click(object sender, EventArgs e)
{
DataClass ob = new DataClass();
bool returnResult = ob.AddEmp(IDtxt.txt, NameTxt.text)
if(bool) // if result == true
//dosomething
else
// do something
}
希望它有所帮助。
答案 2 :(得分:0)
您的TestNam类派生自Form类。您要定义的任何表单事件处理程序必须是TestNam的成员函数,但在此函数中,您可以执行所需的操作,包括将引用传递给表单的活动实例。
如果您的函数特定于表单类,请将它们放在类中,如果它们已共享,则可以将htem放在另一个对象中。