Как вставить данные в базу данных Microsoft Access? - PullRequest
2 голосов
/ 15 июня 2011

Я пытаюсь вставить данные в базу данных Microsoft Access.

Я вставил данные в базу данных Access, но только первый и второй раз показывают, какие данные я вставил. Когда я перестраиваю свое приложение, введенные данные исчезают. Я не знаю, куда они идут и не показывают. Я использую C # с .NET Framework для разработки. Вот соответствующая часть кода:

OleDbConnection con = new OleDbConnection(ConfigurationManager.ConnectionStrings["Constr"].ConnectionString);
OleDbCommand com = new OleDbCommand();
com.Connection = con;
com.CommandText = "Insert into Language(English,Type,Thai) values(@eng,@type,@thai)";
com.Parameters.AddWithValue("@eng", english);
com.Parameters.AddWithValue("@type", type);
com.Parameters.AddWithValue("@thai", thai);
con.Open();
com.ExecuteNonQuery();

Я написал этот код, но я думаю, что это странно. Он не показывает никаких ошибок или исключений, но мои данные вставлены неправильно. Это правильный способ вставки данных? Если так, то почему это не вставляется?

Ответы [ 4 ]

2 голосов
/ 21 июня 2011

Когда я перестраиваю свое приложение, введенные данные исчезают

Я подозреваю, что ваша база данных перезаписывается при перестройке приложения.

Это может произойти,например, если ваше приложение содержит файл MDB, который копируется в выходной каталог при сборке и используется из выходного каталога.

1 голос
/ 15 июня 2011

Я думаю, что язык должен быть резервным словом, и вы должны заключить его в [] скобки.

Также рассмотрите возможность оборачивать код в using блоки, например,

using (OleDbConnection con = new OleDbConnection(...))
{
    using (OleDbCommand com = new OleDbCommand(sqlString, con))
    {
        //code
    }
}

Кроме этой [возможной проблемы с именем таблицы и тем, что вы не закрываете соединение], я не вижу ничего плохого в коде.

0 голосов
/ 15 июня 2011

Вы определяете параметры для запроса, но я нигде не вижу, чтобы эти параметры были привязаны к фактическим данным ...

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

Другими словами, замените это:

com.Parameters.AddWithValue("@eng", english);
com.Parameters.AddWithValue("@type", type);
com.Parameters.AddWithValue("@thai", thai);

С чем-то вроде этого:

//I don't know the data types of your fields, so I'm guessing
com.Parameters.AddWithValue("@eng", "Test1");
com.Parameters.AddWithValue("@type", myEnum.Latin);
com.Parameters.AddWithValue("@thai", "Test1a");

Если это сработает, то ваша проблема, вероятно, связана с переменными english, type и thai, и вы захотите убедиться, что они получают данные, которые, как вы думаете, они должны получать.

0 голосов
/ 15 июня 2011

Возможно, строка подключения неверна. Вы можете использовать ее, используя файл .udl, просто перейдя по ссылке http://www.gotknowhow.com/articles/test-a-database-connection-string-using-notepad

Вы также можете проверить код, показанный ниже

        OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Users\\ruby\\Desktop\\screenShots\\ruby.mdb;Persist Security Info=False");
        con.Open();
        OleDbCommand cmd = new OleDbCommand("insert into raj(Name,Roll) values('XYZ',12);",con);
        cmd.ExecuteNonQuery();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...