Tôi gặp vấn đề với sự ràng buộc của tham số bên dưới. Kết nối hoạt động vì tôi đã thử nghiệm nó mà không cần sử dụng các tham số. Tuy nhiên, giá trị của truy vấn trước khi được thực thi vẫn đang sử dụng '@userName' thay vì 'jsmith' chẳng hạn.OracleCommand SQL Parameters Binding
Sự cố là gì? Đây không phải là cách đúng đắn để đi xung quanh ràng buộc?
public static String GetFullName(String domainUser)
{
DataTable dT;
String fullName = "";
OracleConnection db = DatabaseAdapter.GetConn();
db.Open();
OracleCommand oraCommand = new OracleCommand("SELECT fullname FROM user_profile WHERE domain_user_name = '@userName'", db);
oraCommand.BindByName = true;
oraCommand.Parameters.Add(new OracleParameter("@userName", domainUser));
OracleDataReader oraReader = null;
oraReader = oraCommand.ExecuteReader();
if (oraReader.HasRows)
{
while (oraReader.Read())
{
fullName = oraReader.GetString(0);
}
}
else
{
return "No Rows Found";
}
oraReader.Close();
db.Close();
db.Dispose();
return fullName;
}
EDIT: Tôi đã thêm @ vào tên trường thông số, nhưng nó vẫn không sửa lỗi.
Điều đó trả về lỗi biểu thức bị thiếu ORA-00936. Đó là một varchar trong cơ sở dữ liệu, vì vậy nó cần phải có '', tôi giả sử. –
@RyanSammut, kiểm tra câu trả lời cập nhật của tôi và liên kết tôi đã đăng – Habib
Có thể nó sẽ giúp: http: // stackoverflow.com/questions/7316850/ora-00936-missing-expression-khi-đọc-từ-cơ sở dữ liệu-với-dotconnect-driver. –