问题描述
- C#与数据库的问题,求帮忙
-
现在我需要将图中的richTextBox2中的五条数据加入到oracle数据库里,需要一条一条的输入,网上百度的都是整个richTextBox2都输入进去,造成了
string connString = "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.1.6.161) (PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=orcl)));Persist Security Info=True;User Id=zhianguankong2; Password=zhianguankong2123";
OracleConnection conn = new OracleConnection(connString);
try
{
conn.Open();
string sql = "insert into TB_BLACKLIST(VEHID,CARDID) values('VEHID',:CARDID)";
OracleCommand cmd = new OracleCommand(sql, conn);
OracleParameter parn = new OracleParameter(":CARDID", richTextBox2.Text);
cmd.Parameters.Add(parn);
OracleDataReader odr = cmd.ExecuteReader();
while (odr.Read())
{
richTextBox2.Text = (odr.GetOracleString(1).ToString());//输出字段
}
odr.Close();
}
catch (Exception ee)
{
richTextBox2.Text = (ee.Message); //如果有错误,输出错误信息
}
finally
{
conn.Close(); //关闭连接
}
这是我连接数据库的代码,我需要做的是将数据经过AES加密后,插入到数据库黑名单表tb_blacklist。
解决方案
把richTextBox2里的数据拆分为5条,然后放在一个字符串数组里,分别进行加密,保存到数据库中,执行5次insert就没有这个问题了
解决方案二:
你插入的身份证号 等于 整个文本的值,提示很明显,超出你数据库中设置的最大字符长度
解决方案三:
一行一行查出来 然后“,”分割
解决方案四:
参考TextBoxBase.Lines 属性
使用richTextBox2.Lines[行号]可以读取一行数据。
解决方案五:
foreach (string s in richTextBox.Lines)
插入
上次不是回答你了
解决方案六:
参考C#利用ODP.NET往oracle中高效插入百万数据
string[] tempArray = richTextBox2.Lines;
//设置一个数据库的连接串
string connectStr = "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.1.6.161) (PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=orcl)));Persist Security Info=True;User Id=zhianguankong2; Password=zhianguankong2123";
OracleConnection conn = new OracleConnection(connectStr);
OracleCommand command = new OracleCommand();
command.Connection = conn; //到此为止,还都是我们熟悉的代码,下面就要开始喽
//这个参数需要指定每次批插入的记录数
int recc = tempArray.Length;
command.ArrayBindCount = recc;
//在这个命令行中,用到了参数,参数我们很熟悉,但是这个参数在传值的时候
//用到的是数组,而不是单个的值,这就是它独特的地方
command.CommandText = "insert into TB_BLACKLIST(VEHID,CARDID) values('VEHID',:CARDID)";
conn.Open();
//下面定义几个数组,分别表示字段,数组的长度由参数直接给出
string[] CARDID = new string[recc];
// 为了传递参数,不可避免的要使用参数,下面会连续定义
// 从名称可以直接看出每个参数的含义,不在每个解释了
OracleParameter cardIdParam = new OracleParameter("CARDID", OracleDbType.Varchar2);
cardIdParam.Direction = ParameterDirection.Input;
cardIdParam.Value = CARDID;
command.Parameters.Add(cardIdParam);
//在下面的循环中,先把数组定义好,而不是像上面那样直接生成SQL
for (int i = 0; i < recc; i++) {
CARDID[i] = tempArray.Lines[i]; //可以使用加密函数加密文本
}
//这个调用将把参数数组传进SQL,同时写入数据库
command.ExecuteNonQuery();
时间: 2024-10-30 05:35:01