Как вставить данные в локальную базу данных с помощью C # - PullRequest
0 голосов
/ 20 января 2019

Я работаю над своим первым проектом с использованием локальной базы данных на C #. Я искал в интернете другой код для вставки данных, но у меня ничего не получилось. Я пробую другой код, проблема, с которой я сталкиваюсь, состоит в том, что встроенные функции, которые они используют, не отображаются в моем коде. Может ли кто-нибудь поделиться подлинным кодом для вставки, извлечения и удаления в локальной базе данных?

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

Это мой код:

string str="Data Source=(localdb)shop_database;Initial Catalog=shop_database;Integrated Security=True";

SqlCeConnection con = new SqlCeConnection(str);          
SqlCeDataAdapter sda = new SqlCeDataAdapter();
SqlCeCommand cmd = con.CreateCommand();

cmd.CommandText = "Insert into Account_details (Account_No,Customer_name,Customer_father_name,Profession,Mobile_No,Office_Address,House_Address,CNIC,Item_name,Item_color,Item_model,Item_engine_NO,Item_chasis_NO,Cash_price,Installment_price,Advance_given,Amount_left,Monthly_Installment,Monthly_Rent,Date_of_giving,Sponsor_name,Sponsor_father_name,Sponsor_profession,Sponsor_Address,Sponsor_CNIC,Sponsor_Mobile_No) values (@Account_No,@Customer_name,@Customer_father_name,@Profession,@Mobile_No,@Office_Address,@House_Address,@CNIC,@Item_name,@Item_color,@Item_model,@Item_engine_NO,@Item_chasis_NO,@Cash_price,@Installment_price,@Advance_given,@Amount_left,@Monthly_Installment,@Monthly_Rent,@Date_of_giving,@Sponsor_name,@Sponsor_father_name,@Sponsor_profession,@Sponsor_Address,@Sponsor_CNIC,@Sponsor_Mobile_No)";

cmd.Parameters.AddWithValue("@Account_No", this.Textbox0.Text);
cmd.Parameters.AddWithValue("@Customer_name", this.Textbox1.Text);
cmd.Parameters.AddWithValue("@Customer_father_name", this.Textbox2.Text);
cmd.Parameters.AddWithValue("@Profession", this.Textbox3.Text);
cmd.Parameters.AddWithValue("@Mobile_No", this.Textbox4.Text);
cmd.Parameters.AddWithValue("@Office_Address", this.Textbox5.Text);
cmd.Parameters.AddWithValue("@House_Address", this.Textbox6.Text);
cmd.Parameters.AddWithValue("@CNIC", this.Textbox7.Text);
cmd.Parameters.AddWithValue("@Item_name", this.Textbox14.Text);
cmd.Parameters.AddWithValue("@Item_color", this.Textbox15.Text);
cmd.Parameters.AddWithValue("@Item_model", this.Textbox16.Text);
cmd.Parameters.AddWithValue("@Item_engine_NO", this.Textbox17.Text);
cmd.Parameters.AddWithValue("@Item_chasis_NO", this.Textbox18.Text);
cmd.Parameters.AddWithValue("@Cash_price", this.Textbox19.Text);
cmd.Parameters.AddWithValue("@Installment_price", this.Textbox20.Text);
cmd.Parameters.AddWithValue("@Advance_given", this.Textbox21.Text);
cmd.Parameters.AddWithValue("@Amount_left", this.Textbox25.Text);
cmd.Parameters.AddWithValue("@Monthly_Installment", this.Textbox22.Text);
cmd.Parameters.AddWithValue("@Monthly_Rent", this.Textbox23.Text);
cmd.Parameters.AddWithValue("@Date_of_giving", this.Textbox24.Text);
cmd.Parameters.AddWithValue("@Sponsor_name", this.Textbox8.Text);
cmd.Parameters.AddWithValue("@Sponsor_father_name", this.Textbox9.Text);
cmd.Parameters.AddWithValue("@Sponsor_profession", this.Textbox10.Text);
cmd.Parameters.AddWithValue("@Sponsor_Address", this.Textbox11.Text);
cmd.Parameters.AddWithValue("@Sponsor_CNIC", this.Textbox12.Text);
cmd.Parameters.AddWithValue("@Sponsor_Mobile_No", this.Textbox13.Text);

try
{
    cmd.ExecuteNonQuery();
    MessageBox.Show("Successfully saved");
}
catch (Exception ex)
{
    MessageBox.Show(ex.Message);
}

Ответы [ 2 ]

0 голосов
/ 20 января 2019

Вы, вероятно, делаете две ошибки:

Проблема 1. Ваша соединительная строка выглядит неправильно.Вместо:

Data Source=(localdb)shop_database;Initial Catalog=shop_database;Integrated Security=True";

Должно быть:

Data Source=(LocalDb)\MSSQLLocalDB;Initial Catalog=shop_database;Integrated Security=True";

Проблема 2. Вы не открываете соединение перед выполнением команды.Ваш код в блоке должен выглядеть следующим образом:

try
{
    conn.Open(); // Open the connection
    cmd.ExecuteNonQuery();
    MessageBox.Show("Successfully saved");
}
catch (Exception ex)
{
    MessageBox.Show(ex.Message);
}
finally
{
    conn.Close(); // Close the connection
}

В качестве рекомендации рекомендуется использовать блок " using " для создания соединения.В этом случае вам не нужно явно закрывать соединение и устанавливать его в null:

try
{
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        conn.Open();
        // Remaining code
    }
}
catch(Exception ex)
{
    // Manage your exception here
}
0 голосов
/ 20 января 2019

Для редактирования, вставки, вообще взаимодействия с вашей базой данных вам нужен класс SqlCommand.Сначала вы создаете соединение с вашей базой данных с помощью объекта SqlConnection.Затем вы передаете оператор SQL в виде строки и соединение в конструктор класса SqlConnection.Небольшой пример:

SqlConnection con = new SqlConnection("server=localhost;database=test_db;uid=root;password=yourpassword");
SqlCommand cmd = new SqlCommand("select * from your_table", con);

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

insert into my_table (value1, value2)
values("Example", "Insertion");

Когда вы создали SqlConnection и SqlCommand, вам нужно открыть соединение с базой данных и выполнить команду.Является ли это командой для получения информации из базы данных или редактирования базы данных, которую вы используете ExecuteReader () или ExecuteNonQuery ().Например, если вы хотите получить всю информацию, хранящуюся в одной используемой вами таблице:

SqlConnection con = new SqlConnection("connection string as shown above");
SqlCommand cmd = new SqlCommand("select * from example_table", con);
con.Open();
SqlDataReader reader = cmd.ExecuteReader();
while(reader.Read())
    Console.WriteLine(reader[<table_index or attribute Name>]);

И, наконец, не забудьте вызвать метод close для вашего объекта SqlConnection и SqlDataReader

...