Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

"Compile with /main to specify the type that contains the entry point."

Per the code below, I am getting the following message. I am fairly certain "why" I am getting it, I just don't know how to rearrange the code to move/remove/replace one of the error causing statements.

"Compile with /main to specify the type that contains the entry point."

There is a bunch of code in there under "static void Main(string[] args)", that I got from http://support.microsoft.com/kb/816112 forthe purpose of getting the ID from auto-increment, so i can have it auto increment, when the rest of the code populates the Access database. Any help is appreciated. And suggestions to get the results with easier code are welcome, as well!

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        OleDbConnection vcon = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;data source=C:\Hazardous Materials\KinneyDatabase.accdb");

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            vcon.Open();

            try
            {
                StreamReader sr = new StreamReader(@"C:\Hazardous Materials\cities.txt");
                string line = sr.ReadLine();

                StreamReader sr2 = new StreamReader(@"C:\Hazardous Materials\drugs.txt");
                string line2 = sr2.ReadLine();

                StreamReader sr3 = new StreamReader(@"C:\Hazardous Materials\strengths.txt");
                string line3 = sr3.ReadLine();

                while (line != null)
                {
                    comboBox1.Items.Add(line);
                    line = sr.ReadLine();
                }
                while (line2 != null)
                {
                    comboBox2.Items.Add(line2);
                    line2 = sr2.ReadLine();
                }
                while (line3 != null)
                {
                    comboBox3.Items.Add(line3);
                    line3 = sr3.ReadLine();
                }
                textBox2.Text = "Date";
            }
            catch (System.Exception ex)
            {
                MessageBox.Show("Error: " + ex.Message);
            }
        }

        private static OleDbCommand cmdGetIdentity;

        [STAThread]
        static void Main(string[] args)
        {
            // Open Connection
            OleDbConnection vcon = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;data source=C:\Hazardous Materials\KinneyDatabase.accdb");

            vcon.Open();

            // If the test table does not exist then create the Table
            string strSQL;
            strSQL = "CREATE TABLE AutoIncrementTest " +
                    "(ID int identity, Description varchar(40), " +
                    "CONSTRAINT AutoIncrementTest_PrimaryKey PRIMARY KEY (ID))";

            // Command for Creating Table
            OleDbCommand cmdJetDB = new OleDbCommand(strSQL, vcon);
            cmdJetDB.ExecuteNonQuery();

            // Create a DataAdaptor With Insert Command For inserting records
            OleDbDataAdapter oleDa = new OleDbDataAdapter("Select * from AutoIncrementTest", vcon);


            // Command to Insert Records
            OleDbCommand cmdInsert = new OleDbCommand();
            cmdInsert.CommandText = "INSERT INTO AutoIncrementTest (Description) VALUES (?)";
            cmdInsert.Connection = vcon;
            cmdInsert.Parameters.Add(new OleDbParameter("Description", OleDbType.VarChar, 40, "Description"));
            oleDa.InsertCommand = cmdInsert;

            // Create a DataTable
            DataTable dtTest = new DataTable();
            oleDa.Fill(dtTest);

            DataRow drTest;

            // Add Rows to the Table
            drTest = dtTest.NewRow();
            drTest["Description"] = "This is a Test Row 1";
            dtTest.Rows.Add(drTest);

            drTest = dtTest.NewRow();
            drTest["Description"] = "This is a Test Row 2";
            dtTest.Rows.Add(drTest);

            // Create another Command to get IDENTITY Value
            cmdGetIdentity = new OleDbCommand();
            cmdGetIdentity.CommandText = "SELECT @@IDENTITY";
            cmdGetIdentity.Connection = vcon;

            // Delegate for Handling RowUpdated event
            oleDa.RowUpdated += new OleDbRowUpdatedEventHandler(HandleRowUpdated);

            // Update the Data
            oleDa.Update(dtTest);

            // Drop the table
            cmdJetDB.CommandText = "DROP TABLE AutoIncrementTest";
            cmdJetDB.ExecuteNonQuery();

            // Release the Resources
            cmdGetIdentity = null;
            cmdInsert = null;
            cmdJetDB = null;
            vcon.Close();
            vcon = null;
        }
        // Event Handler for RowUpdated Event
        private static void HandleRowUpdated(object sender, OleDbRowUpdatedEventArgs e)
        {
            if (e.Status == UpdateStatus.Continue && e.StatementType == StatementType.Insert )
            {
                // Get the Identity column value
                e.Row["ID"] = Int32.Parse(cmdGetIdentity.ExecuteScalar().ToString());
                System.Diagnostics.Debug.WriteLine(e.Row["ID"]);
                e.Row.AcceptChanges();
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {
            if (comboBox1.SelectedIndex <= 0)
            {
                MessageBox.Show("All fields must be filled out to submit the form");
            }
            else if (comboBox2.SelectedIndex <= 0)
            {
                MessageBox.Show("All fields must be filled out to submit the form");
            }
            string addRemove = "";
            //string toFrom = "";

            if (radioButton1.Checked)
            {
                addRemove = "add";
                //toFrom = "to";
            }
            else if (radioButton2.Checked)
            {
                addRemove = "remove";
                //toFrom = "from";
            }
            float mgTotal = (float.Parse(textBox1.Text) * float.Parse(comboBox3.Text));

            MessageBox.Show("You have entered the following information: \n\n"
                    + "\n" + "Location: " + float.Parse(comboBox1.Text)
                    + "\n" + "Medication: " + comboBox2.Text
                    + "\n" + "Quantity " + textBox2.Text
                    + "\n" + "Strength " + float.Parse(comboBox3.Text)
                    + "\n" + "Initials: " + textBox3.Text
                    + "\n" + "Add or Remove: " + addRemove
                    + "\n" + "Date: " + textBox2.Text);
        }

        private void button2_Click(object sender, EventArgs e)
        {
            new Form2().Show();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void toolStripMenuItem1_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Produced for use by HealthDirect© \n Scripted by Geoff Bertollini. March 2012");
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
        {
            comboBox3.SelectedIndex = comboBox2.SelectedIndex;
        }
        private void textBox2_TextChanged(object sender, EventArgs e)
        {
            var date = DateTime.Now.ToString("MM/dd/yyyy");
            textBox2.Text = date;
        }

        private void label4_Click_1(object sender, EventArgs e)
        {

        }

        private void exitToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void button4_Click(object sender, EventArgs e)
        {
            string addRemove = "";
            string toFrom = "";

            if (radioButton1.Checked)
            {
                addRemove = "added";
                toFrom = "to";
            }
            else if (radioButton2.Checked)
            {
                addRemove = "removed";
                toFrom = "from";
            }

            float mgTotal = (float.Parse(textBox1.Text) * float.Parse(comboBox3.Text));

            string vsql = string.Format("insert into Log values " +
                    "('{0}','{1}',{2},{3},'{4}',#{5}#,'{6}','{7}')",
                    comboBox1.Text,
                    comboBox2.Text,
                    float.Parse(textBox1.Text),
                    float.Parse(comboBox3.Text),
                    textBox3.Text,
                    textBox2.Text,
                    addRemove,
                    "1"
                    );

            OleDbCommand vcom = new OleDbCommand(vsql, vcon);
            vcom.ExecuteNonQuery();
            MessageBox.Show("Date: " + textBox2.Text + "\n      Initials: " + textBox3.Text
                + "\n" + "You have " + addRemove + " " + mgTotal + " milligrams " + "\n"
                + "of " + comboBox2.Text + "\n" + toFrom + " the inventory of \n" + comboBox1.Text);

            vcom.Dispose();
        }
    }
}
like image 477
Geo Avatar asked Mar 27 '12 20:03

Geo


People also ask

How do I fix error cs0017?

To resolve this error, you can either delete all Main methods in your code, except one, or you can use the StartupObject compiler option to specify which Main method you want to use.

Can a program have more than one entry point?

There can only be one entry point in a C# program. If you have more than one class that has a Main method, you must compile your program with the /main compiler option to specify which Main method to use as the entry point.

What is the entry point in C#?

The Main method is the entry point of a C# application. (Libraries and services do not require a Main method as an entry point.) When the application is started, the Main method is the first method that is invoked. There can only be one entry point in a C# program.


1 Answers

None of the answers get straight to the point.

The properties Dialog of the project, accessed by right-clicking the project, has an Application tab. On this tab there is a drop down list for 'Startup Object' -- just select the correct class file that Visual Studio should target. As long as there is a Main static void event in that class file, it will target it. Be sure Main is capitalized. This won't work:

static void main(string[] args) { ... code ... }

Here is an image:

enter image description here

In a web project you can right click on an ASPX file and set it as the startup page, very similar thing. Why Visual Studio buries this setting doesn't make sense but this is how you do it.

like image 118
user1585204 Avatar answered Oct 19 '22 07:10

user1585204