Я пытаюсь создать простую форму, которая соединяется с моей базой данных SQL и выполняет запрос выбора SQL.
Если я использую простой запрос типа «выбрать * из пользователей», то таблица данных заполняется, и данные присутствуют.Мой запрос намного сложнее и, похоже, не работает.Я получаю много синтаксических ошибок и «команда sql не содержит конструктора, который принимает 31 аргумент».Я уверен, что делаю что-то невероятное неправильно.
SQL Query - Работает в SQL Management Studio.
SELECT sdk.EventsEx.EventTime AS 'Date/Time',
sdk.UsersEx.Field14_50 AS 'Personnel Number',
CONCAT(sdk.EventsEx.Surname, ', ', sdk.EventsEx.FirstName) as 'User',
sdk.EventsEx.CardNumber AS 'Token Number',
sdk.EventsEx.PeripheralName AS 'Where',
sdk.EventsEx.EventTypeDescription AS 'Event',
CONCAT(sdk.EventsEx.EventSubTypeDescription, ' ', sdk.EventsEx.EventDetails) as 'Details'
FROM sdk.EventsEx INNER JOIN
sdk.UsersEx ON sdk.EventsEx.UserID = sdk.UsersEx.UserID
WHERE(sdk.EventsEx.UserID > -1)
and Field14_50 = 'PN32701'
ORDER BY [Date/Time] DESC
Код C #
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnConnect_Click(object sender, EventArgs e)
{
try
{
using (DataTable dt = new DataTable("Users"))
{
using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["cn"].ConnectionString))
{
if (cn.State == ConnectionState.Closed)
cn.Open();
SqlCommand cmd = new SqlCommand
("SELECT sdk.EventsEx.EventTime AS 'Date/Time',
sdk.UsersEx.Field14_50 AS 'Personnel Number',
CONCAT(sdk.EventsEx.Surname, ', ', sdk.EventsEx.FirstName) as 'User',
sdk.EventsEx.CardNumber AS 'Token Number',
sdk.EventsEx.PeripheralName AS 'Where',
sdk.EventsEx.EventTypeDescription AS 'Event',
CONCAT(sdk.EventsEx.EventSubTypeDescription, ' ', sdk.EventsEx.EventDetails) as 'Details'
FROM sdk.EventsEx INNER JOIN
sdk.UsersEx ON sdk.EventsEx.UserID = sdk.UsersEx.UserID
WHERE(sdk.EventsEx.UserID > -1)
and Field14_50 = 'PN32701'
ORDER BY[Date / Time] DESC", cn)
{ CommandType = CommandType.Text };
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
dataGridView1.DataSource = dt;
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}