powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Ошибка: System.StackOverflowException
13 сообщений из 13, страница 1 из 1
Ошибка: System.StackOverflowException
    #39316988
son456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте! Столкнулся с проблемой, при обращении к классу DataAccessLayer выдает ошибку System.StackOverflowException
Сам класс:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.OleDb;
using System.Data;
using System.Collections;
using System.IO;
 
namespace View_DBF_File.DAL
{
    public class DataAccessLayer
    {
        #region Properties
        private string ConnectionString
        {
            get
            {
                return View_DBF_File.Properties.Settings.Default.DBFConnStr;
            }
        }
        private OleDbConnection DBF_Connection
        {
            get
            {
                if (this.dbfConnection == null)
                {
                    this.dbfConnection = new OleDbConnection(this.ConnectionString);
                }
                return this.dbfConnection;
            }
        }
 
        #endregion
 
        #region Fields
        private OleDbConnection dbfConnection;
        private OleDbDataAdapter tableAdapter;  
        //private DataTable all_DBF_File;
        #endregion
 
 
        private OleDbDataAdapter DBF_Table
        {
            get
            {
                if (this.tableAdapter == null)
                {
                    this.tableAdapter = new OleDbDataAdapter();
 
                    OleDbCommand dbfCommand = new OleDbCommand();
                    dbfCommand.CommandText = " select * from @tableName";
                    dbfCommand.CommandType = CommandType.Text;
                    dbfCommand.Connection = this.DBF_Connection;
 
                    OleDbParameter mySqlParameter =
                        new OleDbParameter("@tableName", OleDbType.VarChar, 0);
                    //MySqlParameter.Direction = ParameterDirection.Input;
 
                    this.tableAdapter.SelectCommand = dbfCommand;
                }
                return this.tableAdapter;
            }
        }
 
        public DataTable GetDBF_Table(string tableName)
        {
            this.DBF_Table.SelectCommand.Parameters["@tableName"].Value = tableName;
 
            try
            {
                DataTable classes = new DataTable("Table");
                this.DBF_Table.Fill(classes);
                return classes;
            }
            catch
            {
                return null;
            }
        }
    }
}



Сама форма:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
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 View_DBF_File.DAL;
using System.Collections;
using System.IO;
 
namespace View_DBF_File
{
    public partial class MainForm : Form
    {
 
 
        public MainForm()
        {
            InitializeComponent();
        }
        public DataAccessLayer DataAccessLayer
        {
            get
            {
                if (this.DataAccessLayer == null)
                {
                    this.m_dataAccessLayer = new DataAccessLayer();
                }
                return this.m_dataAccessLayer;
            }
        }
        private DataAccessLayer m_dataAccessLayer;
        public DataTable DBF_Table
        {
            get
            {
                return this.DataAccessLayer.GetDBF_Table(Path.GetFileName(cb_Files.Text.Trim()));
            }
        }
        private void bt_Review_Click(object sender, EventArgs e)
        {
            this.dgv_Review.DataSource = this.DBF_Table;
 
        }
 
        private void cb_Files_Click(object sender, EventArgs e)
        {
 
            cb_Files.Items.Clear();
            foreach (string File in Directory.GetFiles("D:\\KVPLATA\\BAZA6"))
            {
                cb_Files.Items.Add(Path.GetFileName(File));
            }
        }
    }
}
...
Рейтинг: 0 / 0
Ошибка: System.StackOverflowException
    #39317005
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вроде как не дожили еще до того, что бы имя таблицы передавать как параметр
...
Рейтинг: 0 / 0
Ошибка: System.StackOverflowException
    #39317037
son456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне нужно разные таблицы подставлять.
...
Рейтинг: 0 / 0
Ошибка: System.StackOverflowException
    #39317058
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
select * from @tableName


MSSQL такое точно не примет, другие СУБД не знаю, но думаю тоже навряд ли.
...
Рейтинг: 0 / 0
Ошибка: System.StackOverflowException
    #39317087
son456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне ошибку выдает в этом месте:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public DataAccessLayer DataAccessLayer
        {
            get
            {
                if (this.DataAccessLayer == null)
                {
                    this.m_dataAccessLayer = new DataAccessLayer();
                }
                return this.m_dataAccessLayer;
            }
        }
...
Рейтинг: 0 / 0
Ошибка: System.StackOverflowException
    #39317134
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
son456, уже написали ЖО... перепеши
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
        public DataAccessLayer DataAccessLayer
        {
            get
            {
                if (this.m_dataAccessLayer == null)
                {
                    this.m_dataAccessLayer = new DataAccessLayer();
                }
                return this.m_dataAccessLayer;
            }
        }
...
Рейтинг: 0 / 0
Ошибка: System.StackOverflowException
    #39317150
son456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое, спасибо за исправленную предыдущую ошибку, не могли бы вы подсказать ответ на следующую.
OleDbParameter с ParameterName "@tableName" не содержится в данном OleDbParameterCollection
...
Рейтинг: 0 / 0
Ошибка: System.StackOverflowException
    #39317184
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
son456, и снова, вам на это уже обрати внимание... так нельзя сделать...
Лепите команду по месту (в GetDBF_Table) CommandText = String.Format(@" select * from '{0}'", tableName)
И вообще - слишком много в вашем коде лишних телодвижений...
...
Рейтинг: 0 / 0
Ошибка: System.StackOverflowException
    #39317473
son456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ответ. Не могли бы Вы указать где именно у меня в коде лишние телодвижения?
...
Рейтинг: 0 / 0
Ошибка: System.StackOverflowException
    #39317494
son456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я переписал код:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
public DataTable GetDBF_Table(string tableName)
        {
            if (this.tableAdapter == null)
            {
                this.tableAdapter = new OleDbDataAdapter();

                OleDbCommand dbfCommand = new OleDbCommand();
                dbfCommand.CommandText = String.Format(@" select * from {0}", tableName);// " select * from @tableName";
                dbfCommand.CommandType = CommandType.Text;
                dbfCommand.Connection = this.DBF_Connection;

                OleDbParameter dbfParameter =
                    new OleDbParameter("@tableName", OleDbType.VarChar, 0);
                //MySqlParameter.Direction = ParameterDirection.Input;

                this.tableAdapter.SelectCommand = dbfCommand;
                this.tableAdapter.SelectCommand.Parameters["@tableName"].Value = tableName;
                try
                {
                    DataTable classes = new DataTable("Table");
                    this.tableAdapter.Fill(classes);
                    return classes;
                }
                catch
                {
                    return null;
                }
            }
            return null;
        }


Ошибка: OleDbParameter с ParameterName "@tableName" не содержится в данном OleDbParameterCollection.
...
Рейтинг: 0 / 0
Ошибка: System.StackOverflowException
    #39317530
son456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изменил:
public DataTable GetDBF_Table(string tableName)
{
if (this.tableAdapter == null)
{
this.tableAdapter = new OleDbDataAdapter();

OleDbCommand dbfCommand = new OleDbCommand();
dbfCommand.CommandText = String.Format(@" select * from '{0}'", tableName);// " select * from @tableName";
dbfCommand.CommandType = CommandType.Text;
dbfCommand.Connection = this.DBF_Connection;

OleDbParameter dbfParameter =
new OleDbParameter("@tableName", OleDbType.VarChar, 0);
dbfParameter.Direction = ParameterDirection.Output;
this.tableAdapter.SelectCommand = dbfCommand;
this.tableAdapter.SelectCommand.Parameters.Add(dbfParameter);
this.tableAdapter.SelectCommand.Parameters["@tableName"].Value = tableName;
try
{
DataTable classes = new DataTable("Table");
this.tableAdapter.Fill(classes);
return classes;
}
catch
{
return null;
}
}
return null;
}
Ошибка: String[0]: Свойство Size имеет недопустимый размер 0.
...
Рейтинг: 0 / 0
Ошибка: System.StackOverflowException
    #39317551
son456
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все решил нужно было tableName без кавычек и без строки dbfParameter.Direction = ParameterDirection.Output;
...
Рейтинг: 0 / 0
Ошибка: System.StackOverflowException
    #39317596
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
son456, ну скажите на милость, зачем вам параметры?
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Ошибка: System.StackOverflowException
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]