[Mono-dev] ORA-01480 error

David jiangchengyao at gmail.com
Fri Dec 15 08:54:12 EST 2006


When I use OracleParameter to insert Chinese string into oracle database,it
cast error like followings:
ORA-01480: trailing null missing from STR bind value

It happens only when I insert chinese string to database, no error when
inserting english string.

But when I use direct insert sql string,no error happens for both chinese
string and english string.

Error sample:

Test_Error.aspx
<%@ Page Language="C#" %>
<%@ Assembly Name=" System.Data.OracleClient" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OracleClient" %>

<body>
<form runat="server">
<asp:TextBox runat="server" id="content"/>
<input type="Button" Value="Click" runat="server" id="button"
OnServerClick="OnClick"/>
</form>
</body>

<script runat="server">
public void OnClick(object sender,EventArgs e){
if(content.Text != String.Empty || content != null){
Response.Write(content.Text);
String connString = "Server=//127.0.0.1:1521/david
;User Id=mono;Password=jcyjcy";
OracleConnection conn = new OracleConnection(connString);
try{
conn.Open();
Response.Write("OpenSucess");
OracleCommand command = new OracleCommand();
command.Connection = conn;
command.CommandType = CommandType.Text;
// here I use OracleParameter
String insertText = "insert into test values (:name)";
command.CommandText = insertText;
command.Parameters.Add(":name",OracleType.NVarChar ,1000);
command.Parameters[0].Value = content.Text;
Response.Write(command.Parameters [0].Value);
int affectedRows = command.ExecuteNonQuery();
if(affectedRows == 1)
Response.Write("insert sucess");
}
catch(Exception ex){
Response.Write(ex.Message);
}
finally{
conn.Close();
}
}
}
</script>

No error sample:

No_error.aspx
<%@ Page Language="C#" %>
<%@ Assembly Name="System.Data.OracleClient " %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OracleClient" %>

<body>
<form runat="server">
<asp:TextBox runat="server" id="content"/>
<input type="Button" Value="Click" runat="server" id="button"
OnServerClick="OnClick"/>
</form>
</body>

<script runat="server">
public void OnClick(object sender,EventArgs e){
if(content.Text != String.Empty || content != null){
Response.Write(content.Text);
String connString = "Server=//127.0.0.1:1521/david ;User
Id=mono;Password=jcyjcy";
OracleConnection conn = new OracleConnection(connString);
try{
conn.Open();
Response.Write("OpenSucess");
OracleCommand command = new OracleCommand();
command.Connection = conn;
command.CommandType = CommandType.Text;
// not use OracleParameter, direct use sql
String insertText = String.Format("insert into test values('{0}')",
content.Text);
command.CommandText = insertText;
int affectedRows = command.ExecuteNonQuery();
if(affectedRows == 1)
Response.Write("insert sucess");
}
catch(Exception ex){
Response.Write(ex.Message);
}
finally{
conn.Close();
}
}
}
</script>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.ximian.com/pipermail/mono-devel-list/attachments/20061215/a440fc8c/attachment.html 


More information about the Mono-devel-list mailing list