0

我不知道我在这里做错了什么。我试图在主类、SQL 命令参数中调用 class1.cs,但出现错误。我正在从我以前的帖子开始工作,如果有人可以在这里 帮助我,我将不胜感激,在此先感谢..

类.cs

 public static OleDbConnection GetConnection()
    {
        var myCon = new OleDbConnection();
        myCon.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data  
        Source=C:\...Database1.mdb";
        return myCon;
    }

    public static void Insert(string id, string agegroup, string gender, string crimoff, string photoa, string cv)
    {

        var con = GetConnection();
        OleDbCommand cmd = new OleDbCommand();
        cmd.CommandType = CommandType.Text;
        cmd.CommandText = "INSERT INTO Table1 (ID, AgeGroup, Gender, CriminalOffence, photo, CV )";
        cmd.Parameters.AddWithValue("@ID", id);
        cmd.Parameters.AddWithValue("@AgeGroup", agegroup);
        cmd.Parameters.AddWithValue("@Gender", gender);
        cmd.Parameters.AddWithValue("@CriminalOffence", crimoff);
        cmd.Parameters.AddWithValue("@photo", photoa);
        cmd.Parameters.AddWithValue("@CV", cv);
        cmd.Connection = con;
        con.Open();
        cmd.ExecuteNonQuery();
        con.Close();
    }

我收到错误的主窗体类...

 private void btnInsert_Click(object sender, EventArgs e)
    {

        Class1 Insert = new Class1();
        Insert(textBox1.Text, comboBox1.Text, comboBox2.Text, rBYes.Text, rBNo.Text, // error pointing at Insert line
        pictureBox1.Image, richTextBox1.Text);

        if (pictureBox1.Image != null)
        {
            //using MemoryStream:
            ms = new MemoryStream();
            pictureBox1.Image.Save(ms, ImageFormat.Jpeg);
            byte[] photo_aray = new byte[ms.Length];
            ms.Position = 0;
            ms.Read(photo_aray, 0, photo_aray.Length);
            cmd.Parameters.AddWithValue("@photo", photo_aray);
        }
4

3 回答 3

1

您无需创建对象即可调用静态方法。如果该方法在同一个命名空间上,您可以调用如下直接方法。

Insert(textBox1.Text, comboBox1.Text, comboBox2.Text, rBYes.Text, rBNo.Text, 
        pictureBox1.Image, richTextBox1.Text);

但是将您创建的对象的名称更改为Insert

Class1 Insert = new Class1(); // remove this line

如果你的方法Insert写在里面Class1,那么你可以如下调用它

Class1.Insert(textBox1.Text, comboBox1.Text, comboBox2.Text, rBYes.Text, rBNo.Text, 
        pictureBox1.Image, richTextBox1.Text);
于 2013-04-28T19:24:08.403 回答
0
  • 您的插入方法是静态方法。我觉得你应该把那个类名放在它前面。
  • 您的插入方法有 6 个参数,但您尝试输入 7 个参数。
  • 您的参数并非都是字符串类型。一种是图像类型。
于 2013-04-28T19:28:18.517 回答
0

这是因为您在尝试调用 Insert 函数之前立即创建了一个名为 Insert 的变量。编译器正在查看变量并尝试将其用作函数 - 在这种情况下无法完成。

您实际上不需要创建 Class1 的实例 - 正如其他海报所说 - 因为 Insert 函数是静态的。

于 2013-04-28T19:30:22.073 回答