вставить текстовое поле значения в базу данных MySQL - PullRequest
1 голос
/ 19 ноября 2010

У меня проблемы с вставкой значения textbox в базу данных mysql - нет сообщений об ошибках и вставок.Что я делаю не так

 private void RegisterCustomer()
    {
        string firstname = txtfirstname.ToString();

        OdbcConnection conn;
        conn = new OdbcConnection(ConfigurationManager.ConnectionStrings["jConnString"].ConnectionString);
        conn.Open();

        string sql = "insert into klant (firstname) values (@firstname)";
        OdbcCommand cmd = new OdbcCommand(sql, conn);
        cmd.Parameters.Add("@firstname", OdbcType.VarChar).Value = firstname;
        try
        {
            cmd.ExecuteNonQuery();
        }
        catch (Exception ex)
        {
            Check.Text += ex.ToString() + sql;
        }
        finally
        {
            conn.Close();
            conn.Dispose();
            Check.Text += "OK";
        }
    }

Ответы [ 5 ]

0 голосов
/ 19 ноября 2010

По данным MSDN.
http://msdn.microsoft.com/en-us/library/system.data.odbc.odbccommand.parameters.aspx

Когда для CommandType установлено значение Text, поставщик данных .NET Framework для ODBC не поддерживает передачу именованных параметров в оператор SQL или хранимую процедуру, вызываемую OdbcCommand. В любом из этих случаев используйте заполнитель с вопросительным знаком (?).

Итак, ваш запрос должен быть:

string sql = "insert into klant (firstname) values (?)"

Если у вас есть несколько параметров, они устанавливаются в порядке их добавления.

Кроме того, я думаю, что линия

string firstname = txtfirstname.ToString();

следует читать

string firstname = txtfirstname.Text();

Но это не то, что вызывает вашу непосредственную проблему.

0 голосов
/ 19 ноября 2010

У вас есть значения в два раза.Я никогда не видел это таким образом.Вы ВСТАВЛЯЕТЕ В таблицу (columm_names ...) VALUES (value1, 'value2', ...)

edit: возможно, вам следует попробовать выполнить прямой текст и убрать поле, чтобы увидеть, входит ли оно.По крайней мере, вы будете знать, где искать.

edit: я бы также повторил мою переменную namename, чтобы посмотреть, что у нее есть.

0 голосов
/ 19 ноября 2010

Точнее, должно быть:

insert into klant (firstname) values (@firstname)
0 голосов
/ 19 ноября 2010

Ваш запрос:

string sql = "insert into klant values (firstname) values (@firstname)";

Указывает values дважды.Это должно быть в форме:

INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name [(col_name,...)]
{VALUES | VALUE} ({expr | DEFAULT},...),(...),...
[ ON DUPLICATE KEY UPDATE
  col_name=expr
    [, col_name=expr] ... ]

Так что удалите лишние values, и вы должны быть хорошими.

0 голосов
/ 19 ноября 2010
"insert into klant values (firstname) values (@firstname)"

Я думаю, что правильный запрос будет:

"insert into klant values (@firstname)";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...