Insert 是一个变量,但用作方法 - 从主类调用 class1 [关闭]
Posted
技术标签:
【中文标题】Insert 是一个变量,但用作方法 - 从主类调用 class1 [关闭]【英文标题】:Insert is a variable but is used like a method - calling class1 from Main Class [closed] 【发布时间】:2013-04-28 19:20:49 【问题描述】:我不知道我在这里做错了什么。我试图在主类、SQL 命令参数中调用 class1.cs,但出现错误。我正在使用我以前的线程here 如果有人可以在这里帮助我,我将不胜感激,在此先感谢..
class.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);
【问题讨论】:
试试Class1.Insert(therest
...这是一个静态方法。
@MartinMulder - Damith 解决方案有效,但 pictureBox1.Image 出现错误...Argument 5: cannot convert from 'System.Drawing.Image' to 'string'?
【参考方案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);
【讨论】:
感谢 Damith,解决了这个问题。我收到 pictureBox1.Image 错误...参数 5:无法从 'System.Drawing.Image' 转换为 'string'。我要创建另一个线程吗? 是的,创建新问题。 如果它解决了您的问题,请接受答案。 谢谢达米特。你的解决方案奏效了。【参考方案2】:这是因为您在尝试调用 Insert 函数之前立即创建了一个名为 Insert 的变量。编译器正在查看变量并尝试将其用作函数 - 在这种情况下无法完成。
您实际上不需要创建 Class1 的实例 - 正如其他发帖人所说 - 因为 Insert 函数是静态的。
【讨论】:
【参考方案3】: 您的插入方法是静态方法。我觉得你应该把那个类名放在它前面。 您的插入方法有 6 个参数,但您尝试输入 7 个参数。 您的参数并非都是字符串类型。一种是 Image 类型。【讨论】:
以上是关于Insert 是一个变量,但用作方法 - 从主类调用 class1 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
参数 5:无法从 'System.Drawing.Image' 转换为 'string' - 从主类调用 class1