Я имею процедуру, описанную ниже, что дает ошибку MySQL 1064.Вставка при чтении данных
АПП 5 байт VARCHAR, сумма в два раза, а paytype SMALLINT (может быть либо 1, либо 2 на данный момент), paydate как дата , объяснение составляет 50 байт varchar в определении таблицы
Значения, которые я наблюдал, когда я отлаживал 4 байтовые строковые данные для apt, сумма 40, paytype 1, дата 01-02-2014, пояснение составляет около 20 байт строка.
Почему это дает ошибку 1064.
Поскольку чтение данных I'am?
Как вы можете видеть, я использую 2 разных соединения с разъемом. Я читаю данные и подключаю conn1.
private void CreateGlobalDebt()
{
MySqlConnection conn = new MySqlConnection(Pvar.cs);
MySqlConnection conn1 = new MySqlConnection(Pvar.cs);
conn.Open();
conn1.Open();
MySqlCommand cmd = new MySqlCommand("SELECT apt FROM building ORDER BY apt", conn);
MySqlDataReader reader = cmd.ExecuteReader();
MySqlTransaction trans = conn1.BeginTransaction();
while(reader.Read())
{
string apt = reader["apt"].ToString();
MySqlCommand cmd1 = new MySqlCommand("INSERT parameters (apt,amount,paytype,paydate,explanation) VALUES (@apt,@amount,@paytype,@paydate,@explanation",conn1);
cmd1.Parameters.Add("@apt", MySqlDbType.VarChar,5).Value = apt;
cmd1.Parameters.Add("@amount", MySqlDbType.Double).Value = Convert.ToDouble(_textBox[0].Text);
cmd1.Parameters.Add("@paytype", MySqlDbType.Int16).Value = PayType;
cmd1.Parameters.Add("@paydate", MySqlDbType.Date).Value = Convert.ToDateTime(_textBox[2].Text);
cmd1.Parameters.Add("@explanation", MySqlDbType.VarChar, 50).Value = _textBox[3].Text.ToString();
try
{
cmd1.ExecuteNonQuery();
}
catch (MySqlException e)
{
trans.Rollback();
conn.Close();
conn1.Close();
MessageBox.Show(e.Number.ToString() + " -> " + e.Message.ToString());
return;
}
cmd1.Parameters.Clear();
}
trans.Commit();
conn.Close();
conn1.Close();
}
NOt INTO, но parathere в конце спасибо :)))) Потому что все мои INSERT без INTO, но это работает, кроме этого, где есть один паратезис меньше :) –
Рад, что вы получили его! Я бы предложил использовать 'INSERT INTO', потому что [это более стандартный] (http://stackoverflow.com/questions/233919/insert-vs-insert-into) –