Консультация № 143244
06.09.2008, 22:53
0.00 руб.
06.09.2008, 23:58
0 10 1
Небольшой вопрос по ADO.NET: как добавить запись в таблицу?
Составляем запрос, а дальше что!??

Программа на С#
Зарание благодарен!!!

Обсуждение

Неизвестный
07.09.2008, 13:24
общий
Написал:


public void AddSolution(string temp,
string name, decimal val)
{
string SQL_String =
"SELECT INTO Problems_Desposition_Table (Name, Desposition, Steps)" +
"VALUES(" + name + "," + temp + "," + val +")";
OleDbCommand comm = new OleDbCommand(SQL_String, conn);

conn.Open();
int rows = comm.ExecuteNonQuery();
conn.Close();
}


Копм указывает на

int rows = cmd.ExecuteNonQuery();

и пишет:

The SELECT statement includes a reserved word or an argument name that is misspelled or missing, or the punctuation is incorrect.

Что не так
Неизвестный
07.09.2008, 15:43
общий
это ответ
Здравствуйте, Штыхов Антон Евгеньевич!
private static void SqlCommandPrepareEx(string connectionString)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
SqlCommand command = new SqlCommand(null, connection);

// Create and prepare an SQL statement.
command.CommandText =
"INSERT INTO Region (RegionID, RegionDescription) " +
"VALUES (@id, @desc)";
SqlParameter idParam = new SqlParameter("@id", SqlDbType.Int, 0);
SqlParameter descParam =
new SqlParameter("@desc", SqlDbType.Text, 100);
idParam.Value = 20;
descParam.Value = "First Region";
command.Parameters.Add(idParam);
command.Parameters.Add(descParam);

// Call Prepare after setting the Commandtext and Parameters.
command.Prepare();
command.ExecuteNonQuery();

// Change parameter values and call ExecuteNonQuery.
command.Parameters[0].Value = 21;
command.Parameters[1].Value = "Second Region";
command.ExecuteNonQuery();
}
}
Неизвестный
08.09.2008, 08:02
общий
Исправил на:
Код:
public void AddSolution(object temp,
string name, decimal val)
{
string SQL_String =
"Insert INTO Problems_Desposition_Table (Name, Desposition, Steps)" +
"VALUES( @name , @temp , @val)";
OleDbCommand comm = new OleDbCommand(SQL_String, conn);

conn.Open();
int rows = comm.ExecuteNonQuery();
conn.Close();
}


Комп ругается на туже строку:

[quote]No value given for one or more required parameters.[/quote]

Я отлаживал во всех переменнных корректные числа! Что делать

В таблице есть правда ещё один столбец(ключевой) Num о это просто счётчик!
Неизвестный
08.09.2008, 08:39
общий
1. Необходимо описать параметры например
SqlParameter idParam = new SqlParameter("@name", SqlDbType.Text, 100);
2. Присвоить значение каждому параметру

idParam.Value = "пример";

3. Добавить параметр к объекту комманд

comm.Parameters.Add(idParam);


И тогда получим:
public void AddSolution(object temp, string name, decimal val)
{ string SQL_String = "Insert INTO Problems_Desposition_Table (Name, Desposition, Steps)" + "VALUES( @name , @temp , @val)";

OleDbCommand comm = new OleDbCommand(SQL_String, conn);
SqlParameter idParam = new SqlParameter("@name", SqlDbType.Text, 100); // обратить внимание на назначение правильных типов параметров
//перечислить все параметры
idParam.Value = "пример";
//перечислить все параметры
comm.Parameters.Add(idParam);
// добавить все параметры к объекту comm
command.Prepare();

conn.Open();
int rows = comm.ExecuteNonQuery();
conn.Close();
}
Неизвестный
08.09.2008, 08:49
общий
Ясно! Только у меня база данных Access! Использывать SqlParameter или есть что-то другое!

2. Что такое idParam.Value ?? Вводимая величина!? Но ведь она у меня в переменной!

3ю Это для всех переменных прописывать надо!?
Неизвестный
08.09.2008, 09:03
общий
Да извините описался описался
idParam.Value="ывы" - присвоение значения параметру

Описывае все три параметра(толко уточните их типы)
OledbParameter idParam1 = new OledbParameter("@name", DbType.Text, 100);
OledbParameter idParam2= new OledbParameter("@temp", DbType.Text, 100);
OledbParameter idParam3 = new OledbParameter("@val", DbType.Int, 0);

Присваиваем им значения
idParam1.Value="ывы"
idParam2.Value="ывы"
idParam3.Value=8

Добавляем к объекту комманд
comm.Parameters.Add(idParam1);
comm.Parameters.Add(idParam2);
comm.Parameters.Add(idParam3);
Неизвестный
08.09.2008, 09:35
общий
Написал:

Код:
  public void AddSolution(string temp,
string name, decimal val)
{
string SQL_String =
"Insert INTO Problems_Desposition_Table (Name, Desposition, Steps)" +
"VALUES( @name , @temp , @val)";
OleDbCommand comm = new OleDbCommand(SQL_String, conn);
OleDbParameter param1 = new OleDbParameter("@name", OleDbType.Text, 50);
param1.Value = "Parametr";
OleDbParameter param2 = new OleDbParameter("@temp", OleDbType.Text, 100);
param2.Value = "Parametr2";
OleDbParameter param3 = new OleDbParameter("@val", OleDbType.SmallInt, 0);
comm.Parameters.Add(param1);
comm.Parameters.Add(param2);
comm.Parameters.Add(param3);
comm.Prepare();

conn.Open();
int rows = comm.ExecuteNonQuery();
conn.Close();
}




Теперь комп указывает на вызов функции:
No value given for one or more required parameters.
Неизвестный
08.09.2008, 11:14
общий
А третий параметр объявляется, а где присвоение значения
OleDbParameter param3 = new OleDbParameter("@val", OleDbType.SmallInt, 0);

param3.Value = 3; например так
Неизвестный
08.09.2008, 12:41
общий
Cпасибо Огромное!!!!!!!
Неизвестный
08.09.2008, 14:19
общий
Форма ответа