问题描述
[color=#FF9900]stringconstring="datasource=orcl;userid=scott;password=oracle";OracleConnectionconn=newOracleConnection(constring);Int32s1=int.Parse(this.textBox1.Text);strings2=this.textBox2.Text;Int32s3=int.Parse(this.textBox3.Text);strings4=this.comboBox1.Text;stringinsertstring="insertintoSTUDENTvalues('s1','s2','s4','s3')";执行插入的时候报错,ORA-01722无效字符,如果注释掉S1,S3直接执行stringinsertstring="insertintoSTUDENTvalues('01','s2','s4','23')"则插入成功。S1S3是number类型的。试过其他类型都不行,请帮忙看看。
解决方案
解决方案二:
晕死,s1,s2,这是变量啊你怎么当字符串插入数据库了学习一下字符串拼接的知识stringinsertstring=String.Format("insertintoSTUDENTvalues({0},'{1}','{2}',{3})",s1,s2,s4,s3);
解决方案三:
你想把s1这个变量的值插入数据库,而不是"s1"这个字符串,这个你先弄明白
解决方案四:
谢谢,我才接触oracle几天,很多东西根本不懂,谢谢指教。
解决方案五:
引用3楼u010133695的回复:
谢谢,我才接触oracle几天,很多东西根本不懂,谢谢指教。
这个不是oracle的问题,是你对C#语法的了解。不要使用字符串拼接,一方面容易出错,不好维护,另一方面一会带来安全问题。学者使用sqlparameterhttps://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqlparameter%28v=vs.110%29.aspx
解决方案六:
按照一般规律,表的第一个字段是number类型主键,你那个insert没有写插入对应的列,所以会依次插入对应的列,而"s1"在oracle是不能转化成数字的,“01”是可以转化成数字的..所以一个报错,而令一个没报错..
解决方案七:
引用4楼SPFarm的回复:
Quote: 引用3楼u010133695的回复:
谢谢,我才接触oracle几天,很多东西根本不懂,谢谢指教。这个不是oracle的问题,是你对C#语法的了解。不要使用字符串拼接,一方面容易出错,不好维护,另一方面一会带来安全问题。学者使用sqlparameterhttps://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqlparameter%28v=vs.110%29.aspx
对于新手来说,先把SQL语句和字符串拼接玩明白了再说吧,什么SQL注入的问题,现阶段可以不要考虑那么多
解决方案八:
引用6楼Z65443344的回复:
Quote: 引用4楼SPFarm的回复:
Quote: 引用3楼u010133695的回复:
谢谢,我才接触oracle几天,很多东西根本不懂,谢谢指教。这个不是oracle的问题,是你对C#语法的了解。不要使用字符串拼接,一方面容易出错,不好维护,另一方面一会带来安全问题。学者使用sqlparameterhttps://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqlparameter%28v=vs.110%29.aspx
对于新手来说,先把SQL语句和字符串拼接玩明白了再说吧,什么SQL注入的问题,现阶段可以不要考虑那么多
请问,有什么资料可以学习的么?