Здравствуйте!
Имеется сервер на языке C# и база банных SQLite, к которой нужно выполнить подключение и передать SQL - запрос, только при попытке это реализовать сервер сразу же выключается, и отсюда выходит два вопроса:
1. Почему же собственно происходит выключение?
2. Как все-таки подключиться к бд, чтобы не было подобных инцедентов? Покопавшись в настройках программы (DB Browser for SQLite) я наткнулся на это:
Может быть именно здесь все и можно сделать?
Вот код сервера:
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using Microsoft.Data.Sqlite;
namespace Server
{
class Program
{
const int port = 8888;
private static SqliteConnection conn;
static void Main(string[] args)
{
TcpListener server = null;
try
{
IPAddress localAddr = IPAddress.Parse("127.0.0.1");
server = new TcpListener(localAddr, port);
// запуск слушателя
server.Start();
conn = new SqliteConnection("Data source = accounts.db");
while (true)
{
Console.WriteLine("Ожидание подключений... ");
TcpClient client = server.AcceptTcpClient();
Console.WriteLine("Клиент подключился к серверу.");
while (client.Connected)
{
NetworkStream stream = client.GetStream();
byte[] cmd = new byte[256];
StringBuilder builder = new StringBuilder();
int bytes = 0;
do
{
bytes = stream.Read(cmd, 0, cmd.Length);
builder.Append(Encoding.UTF8.GetString(cmd, 0, bytes));
}
while (stream.DataAvailable);
string message = builder.ToString();
Console.WriteLine(message);
conn.Open();
SqliteCommand comd = new SqliteCommand(message, conn);
SqliteDataReader read = comd.ExecuteReader();
comd.ExecuteNonQuery();
stream.Close();
}
client.Close();
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
}
}
Сервер останавливается при выполнении этих команд:
conn.Open();
SqliteCommand comd = new SqliteCommand(message, conn);
SqliteDataReader read = comd.ExecuteReader();
comd.ExecuteNonQuery();