При выполнении запроса назад возвращает сообщение о том, что неверный тип данных. Как это можно исправить? Таблица SQL в Oracle SQL Database XE 11g release-2:
CREATE TABLE "questions"
("id" number not null,
"question" char(100));
Код программы, где все это выполняется:
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 System.Data.OracleClient;
namespace DBKR
{
public partial class Form2 : Form
{
const string connectionString = "DATA SOURCE=localhost:1521/xe;PASSWORD=12345;PERSIST SECURITY INFO=True;USER ID=SYSTEM";
public Form2()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
int a = Convert.ToInt32(textBox1.Text);
string b = richTextBox1.Text;
using (OracleConnection ConnectionToOracle = new OracleConnection(connectionString))
{
OracleCommand cmd = new OracleCommand
{
CommandText = "INSERT INTO \"questions\" VALUES (@a, @b)",
Connection = ConnectionToOracle,
};
cmd.Parameters.Add("@a", OracleType.Int32).Value = a;
cmd.Parameters.Add("@b", OracleType.NVarChar).Value = b;
//cmd.Parameters.AddWithValue("@a", a);
//cmd.Parameters.AddWithValue("@b", b);
ConnectionToOracle.Open();
cmd.ExecuteNonQuery();
}
}
}
}
Как уже заметили, "ORA-01036: illegal variable name/number" это неверное имя переменной либо их количество, а не тип.
Вообще, в Oracle все числовые (дробные/целые, без-/знаковые) типы данных соответствуют типу Decimal
в .Net, а все символьные (+некоторые другие) соотв. String
в .Net.
см. сопоставление типов данных Oracle;
в вашем случае, для
CREATE TABLE "questions"
("id" number not null,
"question" char(100));
учитывая перечисление OracleType вы могли бы написать так:
decimal a = Convert.ToDecimal(textBox1.Text);
string b = richTextBox1.Text;
OracleCommand cmd = new OracleCommand
{
CommandText = "INSERT INTO \"questions\" VALUES (:a, :b)",
Connection = ConnectionToOracle,
};
cmd.Parameters.Add("a", OracleType.Number).Value = a;
cmd.Parameters.Add("b", OracleType.Char).Value = b;
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Читаю о LinkedList, затем в коде появляется LinkedListNodeВ книге используется, но не объясняется что это
Есть такой скрипт(рисует треугольник по заданным координатам и вставляет его в изображение) -
Имеется сей класс, для копирования UTF8 массива символов в неуправляемую память подобно char**, все ли в нем нормально, и можно ли его улучшить?