我正在阅读word文件并在找到“赞”后添加数据。只是不赞成后添加数据。使用此代码的第一个记录添加了完美的记录,但第二次它给出了语法错误(操作员缺失)。请帮我正确添加所有记录
private void button1_Click(object sender, EventArgs e)
{
try
{
Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application();
object nullobj = System.Reflection.Missing.Value;
object file = openFileDialog1.FileName;
Document doc = app.Documents.Open(@"C:\Users\juilee Raut\Downloads\ITCL-CAES 1 (1).docx");
doc.ActiveWindow.Selection.WholeStory();
doc.ActiveWindow.Selection.Copy();
IDataObject da = Clipboard.GetDataObject();
string text = da.GetData(DataFormats.Text).ToString();
richTextBox1.Text = text;
string data = string.Empty;
string[] data1 = richTextBox1.Lines;
List<string> Info = new List<string>();
int i = 0;
int j = 0;
int m = 0;
while (i < data1.Length)
{
if (data1[i].StartsWith("FAVOUR:"))
{
j++;
if (m == 0)
{
data = data + data1[i].ToString() + Environment.NewLine;
string inf = string.Join(Environment.NewLine, Info.ToArray());
con.Open();
OleDbCommand cmd = con.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "INSERT into AllData(FullJud) VALUES('" + inf + "')";
cmd.ExecuteNonQuery();
con.Close();
Info.Clear();
inf = string.Empty;
m = 1;
}
}
else
{
m = 0;
if (data1[i] != "")
{
if (data1[i].EndsWith("2017") && data1[i].Length == 10 || data1[i].EndsWith("2016") && data1[i].Length == 10)
{
data = data + data1[i].ToString() + Environment.NewLine + "##ln##" + Environment.NewLine;
Info.Add(data1[i]);
Info.Add("##ln##");
}
else if(data1[i].StartsWith("SECTION:") || data1[i].StartsWith("Section:") || data1[i].StartsWith("SECTION-") || data1[i].Contains("SUBJECT:") || data1[i].StartsWith("Subject:") || data1[i].StartsWith("SUBJECT-") || data1[i].StartsWith("SUBJECTS:"))
{
data = data + data1[i].ToString() + Environment.NewLine;
}
else if(data1[i].EndsWith("Respondent.") || data1[i].EndsWith("Petitioner.") || data1[i].EndsWith("Appellant.") || data1[i].EndsWith("Appellant") || data1[i].EndsWith("Respondent") || data1[i].EndsWith("Counsel,"))
{
data = data + data1[i].ToString() + Environment.NewLine;
}
else
{
data = data + data1[i].ToString() + Environment.NewLine;
Info.Add(data1[i]);
}
}
}
i++;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
这是我得到的错误:
“查询表达式中的语法错误(缺少运算符)''391 ITR 382(BOM):88 TAXMANN.COM 556 \ r \ n高级BOMBAY法院\ r \ nM.S.SANKLECHA和AK MENON,JJ。\ r \ n \ nMalay N. Sanghvi v / s。所得税官员\ r \ nIT 2014年第1342号上诉期限\ r \ n31.01.2017 \ r \ n ## ln ## \ r \ n \ n税收法案第80-IB节,1961年 - 扣除 - 获利'。“
答案 0 :(得分:1)
如果Info
包含多个值,请说:
Info = { "value1", "value2" }
然后,inf
将是:
inf = "value1\r\nvalue2"
因此,cmd.CommandText
将是:
cmd.CommandText = "INSERT into AllData(FullJud) VALUES('value1\r\nvalue2')";
我很确定这不是想要的行为。
修改强>
如果Info
中的一个值包含'
字符会怎样?
Info = { "val'ue" }
然后,inf
将是:
inf = "val'ue"
因此,cmd.CommandText
将是:
cmd.CommandText = "INSERT into AllData(FullJud) VALUES('val'ue')";
// SQL won't understand that part --------------------------|||
这就是你得到错误的地方。
此外,如果Info
具有以下值,那该怎么办:
Info = { "value1');DROP TABLE [anytable];--" }
这是典型的SQL注入。
一些问题/评论:
j
用于什么? inf = string.Empty;
的目的是什么?它是一个局部变量,将被垃圾收集。 data
的目的是什么?你会在某个时候使用它吗? while
循环时,您正在使用for(int i=0;i<data1.Length;i++)
循环。 data1
包含两个以"FAVOUR:"
开头的连续字符串,该怎么办?为什么你只插入第一个,而不是第二个? 答案 1 :(得分:0)
else
{
data.Replace("'", "/");
data1[i] = data1[i].Replace("'","/");
Info.Add(data1[i]);
data = data + data1[i].ToString() + Environment.NewLine;
}
在其他部分,我只需更换&#39;到/我的问题是解决