Problem z uzupelniewniem komorki w bazie danych SQL

0

Witam,

Mam mały problem z wprowadzeniem wartosci do komórki w bazie,
po stworzeniu dodatkowych kolumn w tabeli chce uzupelnic nowe komorki zerami , ale cos jest nie tak i nie moge :(
dostaje komunikat :

Incorrect syntax near the keyword 'VALUES'.

i nie wiem czemu , jak wg mnie jest wszystko okej :)
prosze o pomoc :)

	  string numbers_p2;
            numbers_p2 = textBox7.Text;
            numbers_p = Convert.ToInt32(numbers_p2);

            connection7 = new System.Data.SqlClient.SqlConnection();
            connection7.ConnectionString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\Database1.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
            connection7.Open();
            for (int i = 1; i < numbers_p + 1; i++)
            {
                string command = " ALTER TABLE tblUser ( problem" + i + " int(1) ) ";
                System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(command, connection7);
                //MessageBox.Show("Kolumna została dodana");
                
           

            }
            for(int i=1;i<numbers_p+1;i++)
            {
            string command2 = "INSERT INTO tblUser (problem" + i + " VALUES (@zero)";
            System.Data.SqlClient.SqlCommand cmd2 = new System.Data.SqlClient.SqlCommand(command2, connection7);
            cmd2.CommandType = CommandType.Text;
            int zero2 = 0;
            cmd2.Parameters.Add("@zero", SqlDbType.Int, 1);
            cmd2.Parameters["@zero"].Value = zero2;
            //cmd.CommandType = CommandType.Text;
            cmd2.ExecuteNonQuery();
            }
              
            connection7.Close();
        }
0

Nie kumam tej linii:

string command2 = "INSERT INTO tblUser (problem" + i + " VALUES (@zero)";

gdzie jakieś nawiasy zamykające czy coś?

0

Mimo dodania nawiasów dzieje sie tak samo :(
a po dodaniu : " i.String() "


 string command2 = "INSERT INTO tblUser (problem" + i.ToString() + ") VALUES (@zero)";

dostaje info ze takiej kolumny nie ma :(

Prosze o poprawienie błedu jak ktos widzi coś ;)

0

for (int i = 1; i < numbers_p + 1; i++)
{
string command = " ALTER TABLE tblUser ( problem" + i + " int(1) ) ";
System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(command, connection7);
//MessageBox.Show("Kolumna została dodana");

        }

A gdzie ExecuteNonQuery(); ?

0

no racja :) ale nie zmiania to faktu ze potem dostaje w tyym freagmecie kodu

       for (int i = 1; i < numbers_p + 1; i++)
            {
                string command = " ALTER TABLE tblUser ( problem" + i.ToString() + " int(1) ) ";
                System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(command, connection7);
                //MessageBox.Show("Kolumna została dodana");
                cmd.CommandType = CommandType.Text;
                cmd.ExecuteNonQuery();
           

            }

i

Incorrect syntax near '('.

0

jesli to rzeczywiscie Microsoft Sql Server Express czy zwykly, to:

nie ALTER TABLE tabela ( kolumna typ(rozmiar))
tylko ALTER TABLE tabela ADD kolumna typ(rozmiar)
wiec nie dziwne ze mu skladnia przy '(' nie pasuje

chya ze chodzi o inna operacje niz ADD. tak czy owak polecam autorowi zajrzec do skladni T-SQL

0

Po dodaniu ADD i nadaniu typu kompulator wyrzucił mi bład z serii "

Column, parameter, or variable #6: Cannot specify a column width on data type int.

a kod wyglada tak:

 string numbers_p2;
            numbers_p2 = textBox7.Text;
            numbers_p = Convert.ToInt32(numbers_p2);

            connection7 = new System.Data.SqlClient.SqlConnection();
            connection7.ConnectionString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\Database1.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
            connection7.Open();
            for (int i = 1; i < numbers_p + 1; i++)
            {
                string command = " ALTER TABLE tblUser ADD problem" + i.ToString() + " int(3)";
                System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(command, connection7);
                //MessageBox.Show("Kolumna została dodana");
                cmd.CommandType = CommandType.Text;
                cmd.ExecuteNonQuery();
           

            }
            for(int i=1;i<numbers_p+1;i++)
            {
            string command2 = "INSERT INTO tblUser (problem" + i.ToString() + ") VALUES (@zero)";
            System.Data.SqlClient.SqlCommand cmd2 = new System.Data.SqlClient.SqlCommand(command2, connection7);
            cmd2.CommandType = CommandType.Text;
            int zero2 = 0;
            cmd2.Parameters.Add("@zero", SqlDbType.Int, 1);
            cmd2.Parameters["@zero"].Value = zero2;
            //cmd.CommandType = CommandType.Text;
            cmd2.ExecuteNonQuery();
            }
              
            connection7.Close();
        }
0

wiec wywal to (3) zza int i zacznij myśleć i/lub czytać dokumentacje i/lub chodzić na kurs angielskiego

jesli faktycznie chcesz ograniczyc liczbe cyfr, tak jak bys to zrobil z liczba znakow w kolumnie n/varchar, musisz niestety wybrac inny typ danych, SQL Server nie ma mozliwosci wybierania dlugosci liczb, sam Ci to zreszta w komunikacie bledu wyraznie powiedzial.

dostepne typy i 'cyfrowosc':
tinyint = bajt = 2.40 max. cyfr,
smallint = max 4.51,
int = max 9.33,
bigint = 18.96 max cyfr
i to sa kropki dziesietne, obliczone na podstawie http://msdn.microsoft.com/en-us/library/ms187745.aspx

1 użytkowników online, w tym zalogowanych: 0, gości: 1