Ребята, я искал вокруг, как ад, но ничто не могло мне помочь, поэтому я думаю, что пришло время спросить.Прежде чем писать в проблему, я должен сказать, что мне нужно ее решение как можно скорее, потому что это проект, который я должен дать завтра, и я застрял на одном предмете с давних времен и все еще теряю время.
Хорошо, вот оно;
Мне нужно добавить книгу в библиотечную систему, на первом этапе я добавляю стандартные функции книги, которые имеют только «одно значение», например (имя, номер страницы, время публикации, идентификатор издателя и т. Д.), Но по желаниюПо моей книге МОЖЕТ ИМЕТЬ НЕСКОЛЬКО ПИСАТЕЛЕЙ И КАТЕГОРИЙ, которые убили меня, и до сих пор я не могу решить.Я попытался добавить книгу в таблицу (книг), затем с информацией, которую я получил, я сделал другую операцию вставки.к (bookWriters) таблице.Пока я это проверяю, компилятор все делает по порядку без ошибок, но когда я проверяю таблицу из SQL Server, ничего не получается.
Вот что я пытался сделать;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Data.SqlClient;
namespace Project_
{
public partial class addBook: Form
{
public addBook()
{
InitializeComponent();
}
public main refForm;
int chosenWritersNumber; //how many writers have selected on listbox
int[] writers= { }; // an array list that i keep writerIDs that comes from class
int ind = 0;
int insertedBookID; // to catch latest added book's ID
int chosenWriterID; // writer that will be added
private void bookAddingPreps()
{
chosenWritersNumber = lstWriters.SelectedItems.Count;
Array.Resize<int>(ref writers, chosenWritersNumber );
for (int i = 0; i < chosenWritersNumber ; i++)
{
writers[i] = ((X_Writers)lstWriters.SelectedItems[i]).XWriterID;
}
}
private void addMainBookInfos()
{
SqlConnection con = new SqlConnection(Conn.Activated);
SqlCommand com = new SqlCommand("AddBook", con);
com.CommandType = CommandType.StoredProcedure;
com.Parameters.AddWithValue("@BookISBN", txtISBN.Text);
con.Close();
}
private void catchAddedBookID()
{
SqlConnection con = new SqlConnection(Conn.Activated);
SqlCommand com = new SqlCommand("catchBookID", con);
com.CommandType = CommandType.StoredProcedure;
con.Open();
SqlDataReader dr = com.ExecuteReader();
if (dr.HasRows)
{
while (dr.Read())
{
insertedBookID = dr.GetInt32(0);
}
}
dr.Close();
con.Close();
}
private void addWritersOfTheBook()
{
chosenWriterID = writers[ind];
SqlConnection con = new SqlConnection(Conn.Activated);
SqlCommand com = new SqlCommand("addBookWriters", con);
com.CommandType = CommandType.StoredProcedure;
com.Parameters.AddWithValue("@BookID", insertedBookID);
com.Parameters.AddWithValue("@WriterID", chosenWriterID);
con.Close();
}
Я называю этометоды по нажатию кнопки.Вы также видите имена хранимых процедур, но, как я проверил, все они правильные, на этой странице должна быть ошибка, которую я до сих пор не вижу, но если это необходимо, я могу добавить, какие процедуры пишет, но они все протестированы и, кажется, работают.
Как я уже сказал, когда я делаю это, так как ind = 0, должен быть добавлен писатель, точка останова показывает, что все в порядке, и компилятор не показывает никаких ошибок, но когда я проверяю таблицу сервера sql, она пуста.
Написано на C # с использованием Visual Studio 2010 Ultimate и SQL Server 2008 Dev.
Спасибо