急!!C#中二进制数据与通过RichTextBox输入的数据如何比较?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了急!!C#中二进制数据与通过RichTextBox输入的数据如何比较?相关的知识,希望对你有一定的参考价值。

我用C#做了一个管理系统,数据库用的是sql2005,数据库表里的数据类型为二进制类型。我通过C#做的界面向数据库里添加数据,必须要实现不能重复添加相同数据的功能。通过richTextBox这个控件来输入数据。我是想着把输入的数据与数据库里的二进制数据进行比较一下,如果有相同数据则不能插入。该怎样转化才能让输入的数据与数据库中的二进制数据进行比较呢????求高手帮忙!!!

这是我的部分代码
QuestionContent在数据库中为二进制类型。
string str=RichTextContent.text;
string sql = "select * from tb_Paper where QuestionContent=" + str;
int count;
count = operate.Nums(sqlt);
if (count > 0)

MessageBox.Show("请不要选择同样的题目!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;

该怎样改呢???

参考技术A 我觉得疑问的是,转换为二进制之后,那还能比较么?都是二进制,你怎么知道有没有重复。应该反过来,把数据库里面的二进制数据转换为字符串,然后再进行比较。这样才知道有没有相同的数据追问

如果那样反过来的话,代码该怎么写呢?您能帮帮忙吗?

追答

判断重复你是用什么来判断是否重复的?名字?还是其它的什么

追问

通过QuestionContent这个字段,这个字段存的是试题内容。

追答

你先自己找下资料,如果找不到我再给你代码

追问

我用百度HI 加你了 你同意一下吧 可以HI 上说!

追答

//执行查询,并返回查询所返回的结果集中第一行的第一列。忽略其他列或行
byte[] result = (byte[])com.ExecuteScalar();
//两种方法转换
//1.根据你的存储方法,将这个二进制数组解析你的结构
//2.如果这个二进制数组是通过将一个结构对象序列化得到的,那么反序列化就行了
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter bin = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
bin.Deserialize(new System.IO.MemoryStream(result));
跟这个类似

参考技术B string str=RichTextContent.text;
//字符串转二进制
byte[] bt= Encoding.Unicode.GetBytes(textBox1.Text);
StringBuilder result = new StringBuilder(data.Length * 8);
foreach (byte b in bt)

result.Append(Convert.ToString(b, 2).PadLeft(8, '0'));

string sql = "select * from tb_Paper where QuestionContent=" + result .tostring();
int count;
count = operate.Nums(sqlt);
if (count > 0)

MessageBox.Show("请不要选择同样的题目!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
追问

您说的byte[] bt= Encoding.Unicode.GetBytes(textBox1.Text)中的textBox1.Text应该是RichTextContent.Text吧 ?StringBuilder result = new StringBuilder(data.Length * 8);中的data输入不进去,我把data 改成bt 运行后还是有错误,提示说不识别人输入的问题,我该改成什么呀??

追答

string str=RichTextContent.text;
byte[] data = Encoding.Unicode.GetBytes(str);

StringBuilder result = new StringBuilder(data.Length * 8);
foreach (byte b in data)

result.Append(Convert.ToString(b, 2).PadLeft(8, '0'));

这个转化2进制的方法是公认的,所以不会转化错误的。所以问题应该出在count = operate.Nums(sqlt);这个方法。调试跟踪一下,很容易发现问题的。

本回答被提问者和网友采纳

在 C# 中的 RichTextBox 中清除文本

【中文标题】在 C# 中的 RichTextBox 中清除文本【英文标题】:Clear Text in RichTextBox in C# 【发布时间】:2012-04-23 13:29:24 【问题描述】:

我有一个 RichTextBox,我想对其进行编码,当用户在框中左键单击时,该文本框中的文本会被清除。

有人可以帮帮我吗?

我尝试过的代码是:

private void richTextBox1_TextChanged(object sender, EventArgs e)

    richTextBox1.text = "";

目前我有一个写有“在此处输入文本”的框(在属性部分的文本下) - 所以当用户在框内单击时,它将清除该文本,因此用户可以输入文本在那里。

谢谢。

【问题讨论】:

如果用户不使用鼠标而只是 Tab 键使 RichTextBox 成为焦点会发生什么? 或者如果用户将文本更改为他想要的内容?! 【参考方案1】:

试试这个

private void richTextBox1_Click(object sender, EventArgs e)

  if (richTextBox1.Text == "Input Text Here")
  
    richTextBox1.Clear();
    richTextBox1.Focus();
  

它会检查默认文本是否存在,如果存在则将其清除并赋予 Richbox 焦点,以便您输入文本。否则,它会继续进行常规的文本更改。

【讨论】:

如果您需要帮助,请告诉我,记住,当然用您的等替换我的对象名称。【参考方案2】:

订阅 rtb 的 MouseClick,然后执行:

    private void richTextBox1_MouseClick(object sender, MouseEventArgs e)
    
        if (e.Button == MouseButtons.Left)
        
            richTextBox1.Clear();
        
    

【讨论】:

我认为您不想在每次鼠标左键单击时清除文本! :) 你说得对,我不想每次鼠标点击都清除它,但是这个程序的主要原因不是保存输入的文本,而是当它在框中时使用它 -该程序是将文本转换为可读文本的工具。所以我左边有一个输入文本框,右边有一个可读列表框,中间有一个按钮。【参考方案3】:

您正在寻找的是一个提示文本框。您可以通过一个 WINAPI 调用来完成此操作。

将此作为参考:http://www.codeproject.com/Articles/18858/Fully-themed-Windows-Vista-Controls

【讨论】:

【参考方案4】:

我是VS2015用户。

richTextBox1.Clear();                 // Form
richTextBox1.Document.Blocks.Clear(); // WPF

【讨论】:

【参考方案5】:

这将起作用:

转到富文本框的“属性”。您将在第一行选项卡中看到一个黄色闪电。在那里,您将找到所有可能触发的事件。搜索“Enter”或“Click”条目,双击它。你可以放任何你想要的东西(比如richTextBox1.Text = "";)

【讨论】:

以上是关于急!!C#中二进制数据与通过RichTextBox输入的数据如何比较?的主要内容,如果未能解决你的问题,请参考以下文章

C#将richtextBox里的内容(图片文字)存入数据库

C# winform中 怎么让RichTextBox支持透明。通过继承还是重绘了?最好有代码,菜鸟学习中。

C#中如何改变richtextbox中已选择部分的字体和颜色?

C# RichTextBox字体居中问题

如何用C#编写一个打字程序,用textbox与richtextbox做

C#中怎样让richTextBox控件的滚动条跟随数据向下移动!