Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по программированию на C# only

Автор: volchonokebk
Дата сообщения: 27.05.2015 11:19
Доброго времени суток. Так как не нашел соответсующей темы, хотелось бы открыть свою.
Ну сразу к телу.
Дело в том что я хочу добвить в переменные данные подключения в MYSQL базу.
Вот пример:

Код:
string Datasource = "localhost";
string Port= "3306";
string Username = "root";
string Password = "1945years";


string constring = "datasource = 'Datasource'; port="'+Port+'"; username=\"Username"\; password=/"Password/" ";

Автор: volchonokebk
Дата сообщения: 28.05.2015 16:26
Кто нибудь смог бы помочь с этой ошибкой?

Код: Warning    2    The variable 'myReader' is declared but never used    
Автор: NeoAnomaly
Дата сообщения: 28.05.2015 16:33

Цитата:
Кто нибудь смог бы помочь с этой ошибкой?

Это не ошибка, а предупреждение компилятора, говорящее о том, что объявленная переменная нигде не используется.
Автор: volchonokebk
Дата сообщения: 28.05.2015 17:47
Ох пасибо За помощь!
Автор: volchonokebk
Дата сообщения: 31.05.2015 12:56
Еще один вопрос:
Передача пеменных между формами. Обясню почему мне это надо. Мне нужно реализовать, роли при авторизации. Я хочу чтоб после авторазции некоторые могли видеть одни данные а другие другие. Для этого мне нужно передачи переменных через форму авторизации в открываюшееся окно.
Автор: NeoAnomaly
Дата сообщения: 31.05.2015 20:19
volchonokebk, что именно интересует то? Как это лучше организовать в архитектурном плане или как это реализовать?
В любом случае ключевые слова: конструктор, передача параметров, ссылки, etc...

З.Ы.
Форумы конечно нужны для общения и помощи, но пока что все вопросы сводятся к чтению первых глав любой книжки по c#
Автор: volchonokebk
Дата сообщения: 01.06.2015 18:57
Дело в том, что ни один из вариантов мне не подходит. Обясню. Моя авторизация проходит через Базу Данных MySql:

Код: string myConnection = " datasource = " + Datasource + "; port=" + Port + "; username=" + Username + ";password=" + Password + "";
MySqlConnection myConn = new MySqlConnection(myConnection);
MySqlCommand SelectCommand = new MySqlCommand("select * from " + Database + "." + Table_user + " where login_user='" + this.u_name.Text + "'and password='" + parole + "';", myConn);
MySqlDataReader myReader;
myConn.Open();
myReader = SelectCommand.ExecuteReader();
int count = 0;
while (myReader.Read())
{
count = count + 1;

string sNsf = myReader.GetString("nsf");
string sLevel = myReader.GetString("level");
string sOwner_level = myReader.GetString("o_level");


if (count == 1)
{
MessageBox.Show("Username and Password in OK");
this.Hide();

main_gate mg = new main_gate();
mg.ShowDialog();



}
Автор: volchonokebk
Дата сообщения: 07.06.2015 02:15
Подскажите пожалуйста где ощибка (((


Автор: AquaTour
Дата сообщения: 07.06.2015 09:00
volchonokebk, при компиляции ошибка выдается или где? Какая ошибка выдается?
Автор: volchonokebk
Дата сообщения: 07.06.2015 10:06
Error    1    The name 'where' does not exist in the current context    
Вот почему он не видет его ума не приложу((
Автор: AquaTour
Дата сообщения: 07.06.2015 13:19
volchonokebk
на скрине у тебя переменная Qwhere, а ты пишешь что ошибка с переменной where, давай лучше код, чтобы ты выступал в роли испорченного телефона.
Автор: volchonokebk
Дата сообщения: 07.06.2015 15:18
Просто за это время сам пытался кое что сделать поэтому переимновал но брателло увы не получилось(((
Вот ошибка
Error    1    The name 'where' does not exist in the current context    
А вот и код

Код:
void Fillcombo()
{

string constring = " datasource = " + Datasource + "; port=" + Port + ";username=" + Username + ";password=" + Password + " ";

if (o_level == null)
{

}
else
{
string where = "where owner_id='" + o_level + "'";
}

string Query = "select * from " + Database + "." + Table_date + " " + where+ ";";

MySqlConnection conDataBase = new MySqlConnection(constring);
MySqlCommand cmdDataBase = new MySqlCommand ( Query, conDataBase);
MySqlDataReader myReader;
try
{
conDataBase.Open();
myReader = cmdDataBase.ExecuteReader();



while (myReader.Read())
{

string sName = myReader.GetString("name");
string sId = myReader.GetString("id");
cmbo_list.Items.Add(sName);

}

}
catch (Exception ex)
{
MessageBox.Show(ex.Message);



}
}
Автор: AquaTour
Дата сообщения: 07.06.2015 16:13
volchonokebk
потому что переменная where определена в ветке else.
наверняка компилятор писал предупреждение, что эта переменная не используется.
Вынеси определение переменной перед if и все заработает.
Автор: volchonokebk
Дата сообщения: 07.06.2015 19:57
AquaTour, Так ведь в этом и суть что в ифе должна быть перменная. Тут что я делаю базу для кораблей которым мы делаем сервис. И хотим чтоб владельцы кораблей которые будут входить видели только свой флот.


Код: if (o_level == null)
Если владелец не определен показать все корабли
{

}
else
Иначе сортировать выборку по номеру владельца корабля
{
string where = "where owner_id='" + o_level + "'";
}
Автор: NeoAnomaly
Дата сообщения: 07.06.2015 20:41
volchonokebk сравни два куска кода, в чём разница?


Цитата:
if (o_level == null)  
             Если владелец не определен показать все корабли
            {  
                 
            }  
            else  
               Иначе  сортировать выборку по номеру владельца корабля
            {  
                string where = "where owner_id='" + o_level + "'";  
            }  



Цитата:

string where = string.empty;

if (o_level == null)  
             Если владелец не определен показать все корабли
            {  
                 
            }  
            else  
               Иначе  сортировать выборку по номеру владельца корабля
            {  
                where = "where owner_id='" + o_level + "'";  
            }  


Добавлено:
В ифе должна быть не переменная. if else then - логическая конструкция, соответственно там должна быть логика. И ещё с предыдущего вопроса мне показалось, что ты путаешь определения, переменная и данные, которые содержатся в переменной - разные вещи.
Автор: volchonokebk
Дата сообщения: 09.06.2015 07:30
Спасибо человеческое. Разобрался .
Да программирование всегда было только хобби. И с книжек читать всегда мне было не понятно. Если только показывают тогда в гголову лезит!
Автор: NeoAnomaly
Дата сообщения: 09.06.2015 08:08

Цитата:
Да программирование всегда было только хобби. И с книжек читать всегда мне было не понятно. Если только показывают тогда в гголову лезит!

может не те книжки читаешь, можно и про 2+2 написать таким языком, что не каждый поймёт )
Автор: volchonokebk
Дата сообщения: 11.06.2015 09:20
Если есть что нибудь по вашему усмотрению пожалуйста дайте или сылку или ж на мыло mahmf2@gmail.com
Автор: NeoAnomaly
Дата сообщения: 11.06.2015 12:35
Сам книг по С# не читал, поэтому из своего опыта не смогу посоветовать, но слышал много хорошего про: "Язык программирования C# 5.0 и платформа .NET 4.5", Эндрю Троэлсен"
Автор: mmotop20oo12
Дата сообщения: 11.06.2015 22:05
а от Шилдт'а книги нормальные?
Автор: AquaTour
Дата сообщения: 12.06.2015 23:24
Нормальные, понятно написанные.
Автор: zzz528
Дата сообщения: 17.06.2015 16:06
я тут тоже спрошу.

Много case, штук 500 примерно, это нормально? И там еще цикл может до 1000 быть
Потому что я где-то слышал что много case это плохо - программа буде тормозить. В обычном c та и везде, если выходило case больше 10, я делал без них с помощью перехода на память.
В сs прямой доступ в память запрещен, нагромаждено всего прочего... что придумать?
Автор: NeoAnomaly
Дата сообщения: 17.06.2015 16:29

Цитата:
В обычном c та и везде, если выходило case больше 10, я делал без них с помощью перехода на память.

zzz528, вот это можно в коде увидеть? т.к. по описанию я такое представляю... )
Автор: ne_viens
Дата сообщения: 17.06.2015 17:37
[q]...много case это плохо - программа буде тормозить...[/q]

Это про if, else if, где, чем ниже if, тем дольше до него добираться.
В простом switch на каждое ветвление уходит одинаковое количество (примерно 2-5) инструкций процессора независимо от case 0 это или case 500. В сложных случаях (case 0:, case 64:, case 3421111:, итд) компилятор собирает код из switch и if найболее оптимальным образом.
Switch по существу и есть "переход на память", типо:

    static const char* g_ptr[] = {L1,L2,L3};
    goto g_ptr[i];
L1:
    puts("zero");
    goto next;
L2:
    puts("one");
    goto next;
L3:
    puts("two");

next:
Автор: zzz528
Дата сообщения: 17.06.2015 17:50
NeoAnomaly
Вроде можно в любом языке где разрешено делать переход по значению в памяти.

В зависимости от значения xxx от 0 до 500 нужно сделать разные дейсвия
На асме пример.


Код:
.data
switch dw case1,case2,case3,case4,case5,....case500
.code
mov ax,xxx
shl     ax,1 (умножение на 2)
add     ax,offset switch
push offset endswitch
jmp      word ptr [ax] вот в этом суть
case1:
...
ret
case2:
...
ret
case3:
...
ret
case4:
...
ret
case5:
...
ret
...
...
...
case500:
...
ret
endswitch:
END
Автор: ne_viens
Дата сообщения: 17.06.2015 20:18

Цитата:
Вроде можно в любом языке где разрешено делать переход по значению в памяти.


Ну если даже C такого не умеет, то, очевидно, ассемблер единственный такой.
Автор: AquaTour
Дата сообщения: 18.06.2015 00:46
zzz528, можно попробовать такой способ, но все равно профилировщиком пройтись не помешает.
А вообще для swich с целыми числами, компилятор C# проводит хорошую оптимизацию, наподобие вашего кода на ассемблере

Код: var array = new Action[3];
array[0] = () => Console.WriteLine(1);
array[1] = () => Console.WriteLine(2);
array[2] = () => Console.WriteLine(3);

var z = 1; // любым способом определить индекс
array[z]();
Автор: volchonokebk
Дата сообщения: 12.01.2016 01:52
Доброго время суток. Я столкнулся с проблемой авторизации и распределением ролей. Итак список пользователей находиться в базе MySQL
Я создал две формы.

login_form.cs
new_window.cs

Моя задаче при авторизации login_form.cs открывалась new_window.cs
Это я решил вот так:

Код:


Код: using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MySql.Data.MySqlClient;


namespace sessions
{
public partial class login_form : Form
{
public login_form()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{

}

private void button1_Click(object sender, EventArgs e)
{
try
{
string myConnection = " datasource = localhost; port=3306;username=databaseusername; password=databasepassword";
MySqlConnection myConn = new MySqlConnection(myConnection);
MySqlCommand SelectCommand = new MySqlCommand("select * from databasename.userstable where login_user='" + this.uname.Text + "' and password='" + this.passw.Text + "';", myConn);
MySqlDataReader myReader;
myConn.Open();
myReader = SelectCommand.ExecuteReader();


int count = 0;
while (myReader.Read())
{
count = count + 1;


}
if (count == 1)
{

new_window nw = new new_window();

nw.Show();
}

else
MessageBox.Show("IN CORRECT");
}
catch(Exception ex)
{
MessageBox.Show("Sorry! ");
//MessageBox.Show(ex.Message);
}
}
}
}
Автор: volchonokebk
Дата сообщения: 13.01.2016 20:48
И никто не поможет?
Автор: NeoAnomaly
Дата сообщения: 14.01.2016 08:03
volchonokebk, собственно в чём вопрос то? Можешь завести в рабочей форме поля, которые будут хранить твои уровни и устанавливать их значения при создании этой формы.


Страницы: 12

Предыдущая тема: Delphi. Получение информации из домена


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.