简体   繁体   中英

Syntax error in field definition when creating column in ms access using C#

I have a problem in creating column in ms access using C#. When I run my program, it will be error and it says "Syntax error in field definition" in buattabel1.ExecuteNonQuery(). I just want to make some columns in Table "Coba" and automatically increasing when cnttbl < banyakgaris. Anyone can help me to solve this problem ?

private void JmlhGarisBtn_Click(object sender, EventArgs e)
    {          
        if (PilihKameraComboBox.SelectedItem == "Proses Semua Kamera")
        {
            //do nothing
        }
        else if (PilihKameraComboBox.SelectedItem == "")
        {
            //do nothing
        }
        else
        {
            string jmlhgaris = JmlhGarisBox.Text;

            OleDbConnection kon = new OleDbConnection(koneksi);
            OleDbCommand simpangaris = kon.CreateCommand();
            OleDbCommand buattabel1 = kon.CreateCommand();
            OleDbCommand buattabel2 = kon.CreateCommand();
            OleDbCommand buattabel3 = kon.CreateCommand();
            OleDbCommand buattabel4 = kon.CreateCommand();
            OleDbCommand bacagaris = kon.CreateCommand();

            kon.Open();

            string simpanbanyakgaris = "update koordinatkamera set jmlhgaris='" + jmlhgaris + "' where namakamera = '" + PilihKameraComboBox.Text + "'";

            string bacadata = "select * from koordinatkamera where namakamera = '" + PilihKameraComboBox.Text + "'";

            simpangaris.CommandText = simpanbanyakgaris;
            bacagaris.CommandText = bacadata;

            simpangaris.ExecuteNonQuery();

            OleDbDataReader bacabanyakgaris = bacagaris.ExecuteReader();

            while (bacabanyakgaris.Read())
            {
                int banyakgaris = int.Parse(bacabanyakgaris["jmlhgaris"].ToString());

                for (int cnttbl = 0; cnttbl < banyakgaris; cnttbl++ )
                {
                    string bikintabel1 = "ALTER TABLE Coba ADD COLUMN halo" + ((cnttbl * 4) + 1) + "Smallint NOT NULL";
                    buattabel1.CommandText = bikintabel1;

                    string bikintabel2 = "ALTER TABLE Coba ADD COLUMN halo" + ((cnttbl * 4) + 2) + "Smallint NOT NULL";
                    buattabel2.CommandText = bikintabel2;

                    string bikintabel3 = "ALTER TABLE Coba ADD COLUMN halo" + ((cnttbl * 4) + 3) + "Smallint NOT NULL";
                    buattabel3.CommandText = bikintabel3;

                    string bikintabel4 = "ALTER TABLE Coba ADD COLUMN halo" + ((cnttbl * 4) + 4) + "Smallint NOT NULL";
                    buattabel4.CommandText = bikintabel4;


                    buattabel1.ExecuteNonQuery();
                    buattabel2.ExecuteNonQuery();
                    buattabel3.ExecuteNonQuery();
                    buattabel4.ExecuteNonQuery();
                }
            }
            kon.Close();
            JmlhGarisBox.Text = "";
        }

"ALTER TABLE Coba ADD COLUMN halo" + ((cnttbl * 4) + 1) + "Smallint NOT NULL" will read ALTER TABLE Coba ADD COLUMN halo1Smallint NOT NULL

You have to add an additional space before Smalllint: "ALTER TABLE Coba ADD COLUMN halo" + ((cnttbl * 4) + 1) + " Smallint NOT NULL"

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM