12 / 12 / 3
Регистрация: 11.10.2010
Сообщений: 159
|
|
1
|
Firebird: выполнение хранимых процедур
20.03.2012, 13:25. Показов 4712. Ответов 0
Доброго времени суток! Как выполнить хранимую процедуру: 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
| FbConnectionStringBuilder fb_con = new FbConnectionStringBuilder();
fb_con.Charset = "UTF8"; //используемая кодировка
fb_con.UserID = Properties.Settings.Default.username.ToString(); //логин
fb_con.Password = Properties.Settings.Default.password.ToString(); //пароль
fb_con.Database = Properties.Settings.Default.pathtodb.ToString(); //путь к файлу базы данных
fb_con.ServerType = 0; //указываем тип сервера (0 - "полноценный Firebird" (classic или super server), 1 - встроенный (embedded))
//создаем подключение
fb = new FbConnection(fb_con.ToString()); //передаем нашу строку подключения объекту класса FbConnection
fb.Open(); //открываем БД
DataTable dt = new DataTable();
FbDataAdapter da = new FbDataAdapter();
FbCommand cmd = new FbCommand("select * from mat_spr", fb);
cmd.CommandType = CommandType.Text;
FbDataReader dr = cmd.ExecuteReader();
dt.Load(dr);
dataGridView1.DataSource = dt;
FbTransaction trn = fb.BeginTransaction();
FbCommand prc = new FbCommand(("execute procedure pr_add_item (:p_cur_date,:p_name,:p_matcol,:p_matcen)"), fb, trn);
prc.Parameters.Add(":p_cur_date","01.02.2012");
prc.Parameters.Add(":p_name", "Russia");
prc.Parameters.Add(":p_matcol", "154");
prc.Parameters.Add(":p_matcen", "454");
prc.ExecuteNonQuery();
trn.Commit();
fb.Close(); |
|
Ругается на ExecuteNonQuery(). Как быть?
Сама процедура Pascal | 1
2
3
4
5
6
7
8
9
10
| begin
mind = gen_id (gen_mat_spr_id,1);
if (mind = 0) then
mind = gen_id (gen_mat_spr_id,1);
insert into mat_spr (ind, mat_name, mat_kol, cur_date)
values (:mind, :p_name,:p_matcol,current_timestamp);
insert into mat_cost(ind,mat_cen)
values (:mind, :p_matcen);
suspend;
end |
|
Добавлено через 1 час 23 минуты
Разобрался! Оказалось "Не то пальто"
C# | 1
2
3
4
5
6
7
8
9
10
| FbTransaction trn = fb.BeginTransaction();
FbCommand prc = new FbCommand("PR_ADD_ITEM", fb,trn);
prc.CommandType = System.Data.CommandType.StoredProcedure;
prc.Parameters.Add("@p_cur_date", FbDbType.Date).Value = "1987.01.01";
prc.Parameters.Add("@p_name", FbDbType.VarChar).Value = "testttt";
prc.Parameters.Add("@p_matcol", FbDbType.Integer).Value = "11111";
prc.Parameters.Add("@p_matcen", FbDbType.Float).Value = "11";
prc.ExecuteNonQuery();
trn.Commit();
fb.Close(); |
|
1
|